在学习图片处理和动画的处理的时候,有很多概念需要掌握,记录下来以便随时查阅。
1> 通过Layer设置UIView控件外观
* borderWidth 设置边框大小
* borderColor 设置边框颜色
* cornerRadius 设置圆角
下面属性必须同时设置了阴影才有效果。
* shadowColor 设置阴影颜色
* shadowOffset 设置阴影偏差
* shadowOpacity 设置阴影不透明度,取值0~1。默认值为0。表示透明。
2> 通过Layer设置UIImageView控件外观(注意跟UIView的区别)
* 设置 UIImageView的圆角必须同时执行下面两行代码
self.imageView.layer.cornerRadius =10;
self.imageView.layer.masksToBounds =YES;
为什么普通的UIView设置圆角一行就可以,UIImageView就需要两行?
答:因为UIImageView显示的图片是通过它的layer的contents属性显示的。图片默认是填满整个layer的,self.imageView.layer.cornerRadius仅仅是设置了layer为圆角,而layer上面的图片并没有圆角,所以需要设置self.imageView.layer.masksToBounds为YES,这样超出layer的图片内容就会被裁剪掉。
* 设置UIImageView的阴影
self.imageView.layer.shadowColor = [UIColor orangeColor].CGColor;
self.imageView.layer.shadowOffset = CGSizeMake(-10, -10);
self.imageView.layer.shadowOpacity =0.5;
为什么UIImageView不能同时设置阴影和圆角?
答:设置圆角时必须设置masksToBounds为YES。一旦设置masksToBounds为YES,那么阴影就会被裁剪掉了。所以要想同时设置 UIImageView的圆角和阴影就只能通过其他方法。
3>通过Layer设置UIButton控件外观
// 设置圆角
self.button.imageView.layer.masksToBounds =YES;
self.button.imageView.layer.cornerRadius =10;
// 设置阴影
self.button.layer.shadowColor = [UIColor greenColor].CGColor;
self.button.layer.shadowOffset = CGSizeMake(10,10);
self.button.layer.shadowOpacity =0.5;
注意:要想同时设置按钮圆角和阴影,必须不能设置按钮的背景图片,只能通过setImage:forState:来设置按钮图片,并且按钮的backgroundColor必须是clearColor。
4> layer的形变属性transform。
* 缩放
// x,y缩放
self.customView.layer.transform = CATransform3DMakeScale(0.5,0.5, 0);
* 平移
// x,y方向平移100,z方向不平移
self.customView.layer.transform = CATransform3DMakeTranslation(100,100, 0);
* 旋转--(ppt简介3d坐标系统)
// 绕 x,y夹角45°旋转
self.customView.layer.transform = CATransform3DMakeRotation(M_PI_4,1, 1,0);
// 绕z轴旋转
self.customView.layer.transform = CATransform3DMakeRotation(M_PI_4,0, 0,1);
//通过KVC来设置
NSValue *v=[NSValue valueWithCATransform3D:CATransform3DMakeTranslation(100,100, 0)];
[self.customView.layer setValue:v forKeyPath:@"transform"];
//如果是只需要设置在某一个方向上的移动,可以参考下面的代码
//在x的方向上向左移动100
[self.customView.layer setValue:@(100) forKeyPath:@"transform.translation.x"];
可以传递哪些 key path,在官方文档搜索"CATransform3D key paths"
5、代码创建新图层
CALayer *layer = [CALayer layer];
layer.frame = bgLayer.bounds;
layer.contents = (id)[UIImage imageNamed:@"lufy"].CGImage;
layer.cornerRadius = 10;
layer.masksToBounds = YES;
layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer addSublayer:layer];
从这里可以看出,没有view也可以做开发。也能利用图层搞一个UIImageView出来。那在开发中是使用图层好还是UIView好? ppt解答。
5>同时设置 UIImageView的圆角和阴影。
// 创建一个背景图层,该图层负责设置阴影
CALayer *backGroundLayer = [CALayer layer];
backGroundLayer.frame = CGRectMake(0,0, 100,100);
backGroundLayer.shadowColor = [UIColor greenColor].CGColor;
backGroundLayer.shadowOffset = CGSizeMake(10,10);
backGroundLayer.shadowOpacity = 0.5;
// 创建一个图片图层,该图层负责显示图片并设置圆角,并将该图层作为子图层添加到背景图层上面去
CALayer *imageViewLayer = [CALayer layer];
imageViewLayer.frame = bgLayer.bounds;
imageViewLayer.contents = (id)[UIImage imageNamed:@"lufy"].CGImage;
imageViewLayer.cornerRadius = 10;
imageViewLayer.masksToBounds = YES;
imageViewLayer.backgroundColor = [UIColor redColor].CGColor;
[bgLayer addSublayer:imageViewLayer];
[self.view.layer addSublayer:bgLayer];