CALayer简单应用——带阴影的icon
来源:互联网 发布:海岛奇兵21本升级数据 编辑:程序博客网 时间:2024/05/15 23:07
原理:正常情况下是在一个图层上既设置icon,也设置阴影就能达到要求;但是这样做会发现阴影不见了...。原因是设置圆形图层需要把暴露在该图层外的子图层部分切割掉( self.iconLayer.masksToBounds = YES;) 在设置图片时会重新绘制一个图层来装图片(被切割后就变成圆的了),而阴影自然也是属于在该图层外的部分,顺理成章的也被切割掉了.... 。所以要同时实现这两个功能,可以换一个角度想:设置两个图层,一个专门装圆形图片,一个专门装圆形图片的阴影部分。
#import "ViewController.h"
#define IconWidth 150
@interface ViewController ()
@property (nonatomic,strong)CALayer *iconLayer;
@property (nonatomic,strong)CALayer *shadowLayer;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorwhiteColor];
self.shadowLayer = [CALayerlayer];
self.shadowLayer.bounds =CGRectMake(0,0,IconWidth,IconWidth);
注:设置阴影层的时候一定要设置backgroundColor,不设置的话不会显示阴影(原因还没查到....).
self.shadowLayer.backgroundColor = [UIColorwhiteColor].CGColor;
self.shadowLayer.cornerRadius =IconWidth/2.0f;
self.shadowLayer.position =self.view.center;
self.shadowLayer.shadowColor = [UIColorblackColor].CGColor;
self.shadowLayer.shadowOffset =CGSizeMake(4.0f,4.0f);
self.shadowLayer.shadowOpacity =0.8f;
[self.view.layeraddSublayer:self.shadowLayer];
self.iconLayer = [CALayerlayer];
self.iconLayer.contents = (__bridgeid_Nullable)([UIImageimageNamed:@"start.jpeg"].CGImage);
self.iconLayer.bounds =CGRectMake(0,0,IconWidth,IconWidth);
self.iconLayer.position =self.shadowLayer.position;
self.iconLayer.cornerRadius =IconWidth/2.0f;
self.iconLayer.masksToBounds =YES;
[self.view.layeraddSublayer:self.iconLayer];
}
@end
效果图:
- CALayer简单应用——带阴影的icon
- CALayer简单应用 —— 阴影
- CALayer的简单应用
- Calayer简单应用——下载进度条
- CALayer简单应用——渐变
- 动画—CALayer的初步学习三:CALayer绘图—通过代理方法绘图扩展1.2(带阴影效果的绘图和图层的形变)(学会从博客上自学)
- CALayer简单应用——隐式动画
- 显示带阴影文字的简单办法
- Android自定义控件——带阴影的ImageView(ShaderImageView)
- 带icon的textview
- 带阴影的表格
- 带阴影的TextView
- CALayer的常见应用
- CALayer的探究应用
- CALayer的简单使用
- CALayer的简单使用
- CALayer 的简单使用
- CALayer 的简单使用
- 数学建模常用算法
- #Objective - C - sixth-Day 数组排序及集合遍历
- 深度估计软件DERS5.1软件与配置运行详细步骤
- IOS持久化之NSKeyedArchiver,NSKeyedUnarchiver
- 1223第三十五节
- CALayer简单应用——带阴影的icon
- listview中如何通过selector改变点击时的背景色
- Java Day2
- 05.(java基础)-02final,finally,finalize的区别
- AFNetWorking使用总结(待总结。。。)
- Objective-C代码混淆
- hdu 2602 Bone Collector(01背包)(水)
- Esper剖析
- 《剑指offer》——打印1到最大的n位数