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. OpenCL,OpenGL编译
  2. 机器学习:线性回归简单有效,但是千万不要踩到雷区!
  3. JAVA入门到精通-网络编程补充和QQ案例
  4. Java——SAX生成XML文件
  5. 网页瀑布流效果实现的几种方式
  6. Perl函数pack/unpack(二进制读写)
  7. 想服务器不宕机,你了解Linux“体检”指标吗?
  8. Android NDK的文件夹
  9. python任务调度平台 界面_分布式任务调度平台XXL-JOB搭建教程
  10. python线性链表_线性表 (单链表、循环链表-python实现)
  11. 365家装智选联盟:为什么说不要在冬天装修?
  12. 易鲸捷钱库新特性之SQL级别HINT功能初见
  13. 【c++随笔】MinGW32编译环境实现DLL的创建与调用实例
  14. Excel:列的顺序颠倒(d-a列变成a-d列)
  15. 苹果手机连接Windows电脑导入照片出现重复
  16. juniper防火墙软件升级
  17. 阿里实名认证Java版(详细教程)
  18. 西部学刊杂志西部学刊杂志社西部学刊编辑部2022年第22期目录
  19. 用turtle模块画小猪佩奇
  20. 在Elasticsearch使用URI花式搜索

热门文章

  1. 【GPU】显卡算力对比表
  2. 07 数据查询语言(DQL)--行选择(WHERE)
  3. 【用Java爬取网页图片——爬虫爬取数据】
  4. 学习使用SAMinside心得笔记
  5. nodejs 事件轮训
  6. 数据分析的基本模型——二元逻辑回归
  7. 中国大学生计算机设计大赛人工智能挑战赛——智慧导盲犬(重工商)
  8. Word 插入内容表格不换页
  9. Linux系统(ubuntu)部署Asp.Net Core网站
  10. 第四部分 :特殊用途的句子(倒装句)