iOS 阴影(shadow)
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)相关推荐
- iOS 圆角cornerRadius、边框border、阴影Shadow
圆角cornerRadius 先看一下官网解释 Setting the radius to a value greater than 0.0 causes the layer to begin dra ...
- 布局阴影shadow的制作
布局阴影shadow的制作 最近的项目,因为是和书籍有关,所以UI和我商量时问我 能不能在书架显示的给每本书(item)加一下阴影,我说 可以啊,因为CardView有显示阴影的属性,应该很方便 .但 ...
- android bitmap 阴影,Android编程之阴影(Shadow)制作方法
本文实例讲述了Android编程之阴影(Shadow)制作方法.分享给大家供大家参考,具体如下: 先看运行效果图如下: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影. 阴影制作是 ...
- Android 自定义阴影Shadow颜色,大小等样式
最近在项目碰到一个比较头疼的项目,设计师需要给ui图中的一些按钮之类的东西添加阴影.乍一看设计图,这没啥嘛,咱们Android中不是有这个属性嘛,于是撸起袖子开搞: <TextViewandro ...
- web阴影shadow练习
练习题目 完成一下图片的实现过程: 鼠标点击显示阴影. 实现代码 html代码如下: <!DOCTYPE html> <html lang="en"> &l ...
- Android:自定义Shape 加上阴影shadow之方法
直接用layer-list来实现,在项目 res->drawable中创建一个xml,如果列表中有layer-list选择的话直接选择创建,如果没有的话就随意(似乎4.0以下没有 layer-l ...
- iOS-学习资源看我就够了
iOS学习视频及资料 懒人demo大全更新至4.0版 (oc + swift) 史上最全iOS 开发工具集合 笔试面试 iOS-笔试面试总结 网络通信 <iOS 对 HTTPS 证书链的验证&g ...
- U3D 平行光阴影细节 Directional Shadow Details
Desktop This page explains shadows from Directional lights in detail. 此页面详细介绍了平行光阴影. Directional lig ...
- Directional Shadow Details 平行光阴影细节
This page explains shadows from Directional lights in detail. 此页面详细介绍了平行光阴影. Directional lights are ...
最新文章
- 工具-Xmind常用快捷键/使用
- 天平思想—寻找数组中心索引
- 研发考核难的本质是因为这三个特点
- Java的堆与栈,科普给大家
- Spring IOC详解与配置
- 图模型在信息流推荐系统中的原理和实践
- Fixed the bug:while running alert/confirm in javascript the chrome freezes
- 选择数据分析工具应考虑4个因素
- 利用Twemperf测试Memcache的性能
- 最新的windows xp sp3序列号(绝对可通过正版验证)
- 巨头卡位新房赛道,与贝壳、易居相比,房多多的底牌是什么?
- 基于jQuery省市县联动插件
- AopAutoConfiguration matched: - @ConditionalOnProperty (spring.aop.auto=true) matched (OnPrope.
- qchart 怎么点击一下 出一条线_动漫日系雨伞怎么画?教你用集中线尺画一把日本雨伞!...
- java代码是干嘛的_程序员究竟是干嘛的呢?
- gpg invalid解决方法
- stp实验心得_实验报告STP
- python 图片正方形化
- 品Spring:bean定义上梁山
- 亚马逊echo中国使用_您是否需要Amazon Prime才能使用Amazon Echo?
热门文章
- 在线浏览ipynb文件
- 【读书笔记】【程序员的自我修养 -- 链接、装载与库(二)】进程虚拟地址空间、装载与动态链接、GOT、全局符号表、共享库的组织、DLL、C++与动态链接
- mysql 查询分析工具下载_SQL分析工具下载-SQL查询工具(DB Solo)下载v5.2.5官方版-西西软件下载...
- 用python编写学生管理系统_用python写一个简单的学生管理系统
- matlab关联度排序模型,灰色关联和加权关联分析法matlab程序
- IBM serverx服务器RAID阵列磁盘配置JBOD模式(直通模式)
- qemu-img转换镜像文件格式
- javascript表格操作的快捷方法
- html编辑四则运算,denglu.html
- 联通TEWA 800改桥接