CALayer的使用

在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本框、一个Label,一 个图片等等,  

其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层layer, 当我们创建UIView是系统会自动的在创建一个图层(CALayer),  当UIView需要显示到屏幕上时,会调用drawRect方法进行绘图,并且会将所有内容绘制在自己的图层 上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示, 所以通过操作CALayer可以方便的调整UIView的外观, 比如阴影效果, 圆角效果等, 也可以给layer添加动画来实现一些炫酷的效果.  下面是CALayer 的常见属性:

@property (strong, nonatomic) UIWindow *window;
@property CGFloat borderWidth;
@property CGColorRef borderColor;
@property CGColorRef backgroundColor;
@property float opacity;
@property CGColorRef shadowColor;
@property float shadowOpacity;
@property CGSize shadowOffset;
@property CGFloat shadowRadius;
@property(strong) id contents;
@property CGFloat cornerRadius;
@property CGRect bounds;
@property CGPoint position;
@property CGPoint anchorPoint;
@property CATransform3D transform;
@property(getter=isHidden) BOOL hidden;
@property(readonly) CALayer *superlayer;
@property(copy) NSArray *sublayers;
@property BOOL masksToBounds;
根据以上属性我们就可以做出不同的效果,首先创建一个myView,  然后设置myView的各种效果

 //线宽。不会改变容器的大小
    self.myView.layer.borderWidth = 6;
    //边框的颜色 类型是CGColorRef
    self.myView.layer.borderColor = [UIColor redColor].CGColor;
    //设置圆角---相当于设置了剪裁区域
    self.myView.layer.cornerRadius = 50;
    //设置透明度[0-1],默认值1不透明
    self.myView.layer.opacity = 0.5;
    
    //CALayer 属于QuartzCore框架,可以跨平台(OSX和iOS)
    //如果CALayer的属性依赖于UIKit框架,就无法跨平台
    self.myView.layer.contents = (id)[UIImage imageNamed:@"1.jpg"].CGImage;
    //设置剪裁,超过剪裁区域的内容会被减掉
    self.myView.layer.masksToBounds = YES;
    //设置阴影--不能和设置剪裁一起使用,否则会把阴影剪裁掉
    //阴影的颜色
    self.myView.layer.shadowColor = [UIColor grayColor].CGColor;
    //设置阴影的偏移
    self.myView.layer.shadowOffset = CGSizeMake(20, -20);
    //阴影的透明度 默认值是0 完全透明--必须设置的
    self.myView.layer.shadowOpacity = 1;
    //阴影的模糊程度
    self.myView.layer.shadowRadius = 2;
    //设置阴影的范围,不能和shadowOffset一起使用
    UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(-20, -20, 240, 240)];
    self.myView.layer.shadowPath   = path.CGPath;







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值