1. 简单阴影

我们给layer设置了shadowOpacity后就能得到一个简单的阴影

view.layer.shadowOpacity = 1;

shadowOpacity设置了阴影的不透明度,取值范围在0~1
这里shadow有一个默认值
shadowOffset = CGSizeMake(0, -3)
shadowRadius = 3.0
注意:如果view没有设置背景色阴影也是不会显示的

2. 阴影属性

layer中与阴影相关的属性有以下几个

(CGColorRef *) shadowColor//阴影颜色
(float) shadowOpacity//阴影透明度
(CGSize) shadowOffset//阴影偏移量
(CGFloat) shadowRadius//模糊计算的半径
(CGPathRef *) shadowPath//阴影路径

3. shadowColor

- (void)p_setupSubViews {self.view.backgroundColor = [UIColor whiteColor];[self p_setupViewWithY:100 shadowColor:[UIColor redColor]];[self p_setupViewWithY:170 shadowColor:[UIColor blueColor]];[self p_setupViewWithY:240 shadowColor:[UIColor yellowColor]];
}- (void)p_setupViewWithY:(CGFloat)y shadowColor:(UIColor *)shadowColor {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;view.layer.shadowColor = shadowColor.CGColor;
}

4. shadowOpacity

- (void)p_setupSubViews {self.view.backgroundColor = [UIColor whiteColor];[self p_setupViewWithY:100 shadowOpacity:0.2];[self p_setupViewWithY:170 shadowOpacity:0.6];[self p_setupViewWithY:240 shadowOpacity:0.9];
}- (void)p_setupViewWithY:(CGFloat)y shadowOpacity:(float)shadowOpacity {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = shadowOpacity;
}

5. shadowOffset

- (void)p_setupSubViews {self.view.backgroundColor = [UIColor whiteColor];[self p_setupViewWithY:100 shadowOffset:CGSizeMake(0, 0)];[self p_setupViewWithY:170 shadowOffset:CGSizeMake(5, 0)];[self p_setupViewWithY:240 shadowOffset:CGSizeMake(-5, 0)];[self p_setupViewWithY:310 shadowOffset:CGSizeMake(0, 5)];[self p_setupViewWithY:380 shadowOffset:CGSizeMake(0, -5)];[self p_setupViewWithY:450 shadowOffset:CGSizeMake(5, 5)];[self p_setupViewWithY:520 shadowOffset:CGSizeMake(-5, -5)];
}- (void)p_setupViewWithY:(CGFloat)y shadowOffset:(CGSize)shadowOffset {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;view.layer.shadowOffset = shadowOffset;
}

6. shadowRadius

shadowRadius其实可以理解为阴影的宽度

- (void)p_setupSubViews {self.view.backgroundColor = [UIColor whiteColor];[self p_setupViewWithY:100 shadowRadius:0];[self p_setupViewWithY:170 shadowRadius:3.0];[self p_setupViewWithY:240 shadowRadius:10.0];}- (void)p_setupViewWithY:(CGFloat)y shadowRadius:(CGFloat)shadowRadius {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor yellowColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;view.layer.shadowOffset = CGSizeMake(0, 0);view.layer.shadowRadius = shadowRadius;
}

7. shadowPath

- (void)p_setupSubViews {self.view.backgroundColor = [UIColor whiteColor];[self p_setupViewWithY1:100];[self p_setupViewWithY2:170];[self p_setupViewWithY3:240];//贝塞尔曲线未闭合
}- (void)p_setupViewWithY1:(CGFloat)y {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;UIBezierPath *path = [UIBezierPath bezierPathWithRect:view.bounds];view.layer.shadowPath = path.CGPath;
}- (void)p_setupViewWithY2:(CGFloat)y {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(0, 0)];[path addLineToPoint:CGPointMake(0, view.frame.size.height + 10)];[path addLineToPoint:CGPointMake(view.frame.size.width, view.frame.size.height + 10)];[path addLineToPoint:CGPointMake(view.frame.size.width, 0)];[path addLineToPoint:CGPointMake(0, 0)];view.layer.shadowPath = path.CGPath;
}- (void)p_setupViewWithY3:(CGFloat)y {UIView *view = [[UIView alloc] initWithFrame:CGRectMake(30, y, [UIScreen mainScreen].bounds.size.width - 60, 50)];view.backgroundColor = [UIColor whiteColor];[self.view addSubview:view];view.layer.shadowOpacity = 1;view.layer.shadowOffset = CGSizeMake(0, 0);UIBezierPath *path = [UIBezierPath bezierPath];[path moveToPoint:CGPointMake(-5, 0)];[path addLineToPoint:CGPointMake(-5, view.frame.size.height)];[path addLineToPoint:CGPointMake(view.frame.size.width, view.frame.size.height)];[path addLineToPoint:CGPointMake(view.frame.size.width, 0)];view.layer.shadowPath = path.CGPath;
}

当用bounds设置path时,看起来的效果与只设置了shadowOpacity一样
但是添加了shadowPath后消除了离屏渲染问题

微信公号TIGERXXXX后台回复636T7获取demo源码

iOS 阴影(shadow)相关推荐

  1. iOS 圆角cornerRadius、边框border、阴影Shadow

    圆角cornerRadius 先看一下官网解释 Setting the radius to a value greater than 0.0 causes the layer to begin dra ...

  2. 布局阴影shadow的制作

    布局阴影shadow的制作 最近的项目,因为是和书籍有关,所以UI和我商量时问我 能不能在书架显示的给每本书(item)加一下阴影,我说 可以啊,因为CardView有显示阴影的属性,应该很方便 .但 ...

  3. android bitmap 阴影,Android编程之阴影(Shadow)制作方法

    本文实例讲述了Android编程之阴影(Shadow)制作方法.分享给大家供大家参考,具体如下: 先看运行效果图如下: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影. 阴影制作是 ...

  4. Android 自定义阴影Shadow颜色,大小等样式

    最近在项目碰到一个比较头疼的项目,设计师需要给ui图中的一些按钮之类的东西添加阴影.乍一看设计图,这没啥嘛,咱们Android中不是有这个属性嘛,于是撸起袖子开搞: <TextViewandro ...

  5. web阴影shadow练习

    练习题目 完成一下图片的实现过程: 鼠标点击显示阴影. 实现代码 html代码如下: <!DOCTYPE html> <html lang="en"> &l ...

  6. Android:自定义Shape 加上阴影shadow之方法

    直接用layer-list来实现,在项目 res->drawable中创建一个xml,如果列表中有layer-list选择的话直接选择创建,如果没有的话就随意(似乎4.0以下没有 layer-l ...

  7. iOS-学习资源看我就够了

    iOS学习视频及资料 懒人demo大全更新至4.0版 (oc + swift) 史上最全iOS 开发工具集合 笔试面试 iOS-笔试面试总结 网络通信 <iOS 对 HTTPS 证书链的验证&g ...

  8. U3D 平行光阴影细节 Directional Shadow Details

    Desktop This page explains shadows from Directional lights in detail. 此页面详细介绍了平行光阴影. Directional lig ...

  9. Directional Shadow Details 平行光阴影细节

    This page explains shadows from Directional lights in detail. 此页面详细介绍了平行光阴影. Directional lights are ...

最新文章

  1. 工具-Xmind常用快捷键/使用
  2. 天平思想—寻找数组中心索引
  3. 研发考核难的本质是因为这三个特点
  4. Java的堆与栈,科普给大家
  5. Spring IOC详解与配置
  6. 图模型在信息流推荐系统中的原理和实践
  7. Fixed the bug:while running alert/confirm in javascript the chrome freezes
  8. 选择数据分析工具应考虑4个因素
  9. 利用Twemperf测试Memcache的性能
  10. 最新的windows xp sp3序列号(绝对可通过正版验证)
  11. 巨头卡位新房赛道,与贝壳、易居相比,房多多的底牌是什么?
  12. 基于jQuery省市县联动插件
  13. AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPrope.
  14. qchart 怎么点击一下 出一条线_动漫日系雨伞怎么画?教你用集中线尺画一把日本雨伞!...
  15. java代码是干嘛的_程序员究竟是干嘛的呢?
  16. gpg invalid解决方法
  17. stp实验心得_实验报告STP
  18. python 图片正方形化
  19. 品Spring:bean定义上梁山
  20. 亚马逊echo中国使用_您是否需要Amazon Prime才能使用Amazon Echo?

热门文章

  1. 在线浏览ipynb文件
  2. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(二)】进程虚拟地址空间、装载与动态链接、GOT、全局符号表、共享库的组织、DLL、C++与动态链接
  3. mysql 查询分析工具下载_SQL分析工具下载-SQL查询工具(DB Solo)下载v5.2.5官方版-西西软件下载...
  4. 用python编写学生管理系统_用python写一个简单的学生管理系统
  5. matlab关联度排序模型,灰色关联和加权关联分析法matlab程序
  6. IBM serverx服务器RAID阵列磁盘配置JBOD模式(直通模式)
  7. qemu-img转换镜像文件格式
  8. javascript表格操作的快捷方法
  9. html编辑四则运算,denglu.html
  10. 联通TEWA 800改桥接