美文网首页
iOS编中的CAlayer详解

iOS编中的CAlayer详解

作者: 单线程Jack | 来源:发表于2019-07-23 11:53 被阅读0次

CALayer 是一个很经常使用的到的 Object,很常用,也很重要,同时又有比较多的属性,嗯,一定要详细了解下。

CALayer 的原理很难懂,由于我目前只注重运用,所以就说那些在实际开发中能用到的一些地方。

如果要更改 UIView 的 CALayer,要引用:#import <QuartzCore/QuartzCore.h>.

下面先推荐两篇文章: 文章 1:[原理介绍的比较详细](javascript:void(0);); 2:官方文章

为什么说 CALayer 很重要呢:

  1. 每个UIView 都有 CALayer,即 UIView.layer,同时 UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它,所以,CALayer 应用很广泛

  2. CALayer 能够对 UIView 做许多设定,如:阴影、边框、圆角和透明效果等,且这些设定都是很有用的

下面就逐个过下 CALayer 的一些重要属性:

  1. shadowPath : 设置 CALayer 背景(shodow)的位置

  2. shadowOffset : shadow 在 X 和 Y 轴 上延伸的方向,即 shadow 的大小

  3. shadowOpacity : shadow 的透明效果

  4. shadowRadius : shadow 的渐变距离,从外围开始,往里渐变 shadowRadius 距离

  5. masksToBounds : 很重要的属性,可以用此属性来防止子元素大小溢出父元素,如若防止溢出,请设为 true

6. borderWidth 和 boarderColor : 边框颜色和宽度,很常用

  1. bounds : 对于我来说比较难的一个属性,测了半天也没完全了解,只知道可以用来控制 UIView 的大小,但是不能控制 位置

  2. opacity : UIView 的透明效果

  3. cornerRadius : UIView 的圆角

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UIView *viewSample = [[UIView alloc] init];
    [self.view addSubview:viewSample];
 
    viewSample.backgroundColor = [UIColor greenColor];
    viewSample.frame = CGRectMake(100, 100, 400, 400);
    
    
    //Test 1 阴影
    //viewSample.layer.shadowPath = [UIBezierPath bezierPathWithRect:viewSample.bounds].CGPath;
    viewSample.layer.shadowPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 400, 400)].CGPath;
    viewSample.layer.masksToBounds = NO;
    viewSample.layer.shadowOffset = CGSizeMake(10, 10);
    viewSample.layer.shadowRadius = 5;
    viewSample.layer.shadowOpacity = 0.5;
    
    //Test 2 边框
    viewSample.layer.borderWidth = 2;
    viewSample.layer.borderColor = [[UIColor redColor] CGColor];
    
    //Test 3 masksToBounds
    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0,0, 500, 500)];
    btn.backgroundColor = [UIColor lightGrayColor];
    //[viewSample addSubview:btn];
    //viewSample.layer.masksToBounds = true;
    
    
    //Test 4 bounds
    //viewSample.layer.bounds = CGRectMake(200, 200, 500, 500);
 
    
    //Test 5
    viewSample.layer.opacity = 0.5;
    viewSample.layer.cornerRadius = 5;
}

相关文章

网友评论

      本文标题:iOS编中的CAlayer详解

      本文链接:https://www.haomeiwen.com/subject/njdcgqtx.html