CALayer

来源:互联网 发布:js string转timestamp 编辑:程序博客网 时间:2024/06/07 17:38

CALayer图层https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/CALayer_class/index.htmlAPI

CALayer是一个层的概念,视图之所以能够显示,都是因为这个层的原因但CALayer 不清楚具体的响应链(不能相应用户的点击触摸等事件).通过CALayer我们可以给UIView添加动画,还可以改变它的形状,边框宽度,颜色等。

CALayer的两个重要属性position用来设置CALayer在父层中的位置,以父层左上角(0,0)  

anchorPoint(定位点、锚点)决定CALayer上的点在父层中position所指的位置,以自己的左上角(0,0) 它的xy取值范围都是0 1 默认只为(0.5 ,0.5)锚点在CALayer的中间

CALayer有一个控制图层角的曲率属性conrnerRadius ,默认情况下这个曲率只影响背景颜色不影响背景图片或是子图层 ,如果吧masksToBounds设置为YES时图层里面的所有东西都会被截取。

CALayer的简单使用

  //改变形状

    UIView *myview = [[UIViewalloc]initWithFrame:CGRectMake(10,20, 100,200)];

    myview.layer.backgroundColor = [UIColororangeColor].CGColor;

    //边框的颜色

    myview.layer.borderColor = [UIColorgreenColor].CGColor;

    //边框的宽度

    myview.layer.borderWidth =5;

    //允许设置圆角

    myview.layer.masksToBounds =YES;

    //允许设置圆角

//    myview.clipsToBounds = YES;

    myview.layer.cornerRadius =10;

    [self.windowaddSubview:myview];

    

    UIView *myview1 = [[UIViewalloc]initWithFrame:CGRectMake(100,250, 100,200)];

    myview1.layer.backgroundColor = [UIColorgreenColor].CGColor;

    [self.windowaddSubview:myview1];

    //通过transform这个key创建一个动画

    CABasicAnimation *basic = [CABasicAnimationanimationWithKeyPath:@"transform"];

    //第一个:弧度 第二个:x 第三个:y 第四个:z

    basic.toValue = [NSValuevalueWithCATransform3D:CATransform3DMakeRotation(3.1415,1.0, 0,0)];//3D动画,旋转180,y为轴旋转

    basic.duration =2;//持续时间

    basic.repeatCount =2;//重复次数

    basic.cumulative =YES;//是否继续接着执行

//注意:动画是添加到layer上面

    [myview1.layeraddAnimation:basic forKey:@"animation"];

    //注意:不能马上将动画移除

//    [myview1.layer removeAnimationForKey:@"animation"];

    //注意:两次动画会合并在一起执行

    CABasicAnimation *basic1 = [CABasicAnimationanimationWithKeyPath:@"transform"];

    basic1.toValue = [NSValuevalueWithCATransform3D:CATransform3DMakeRotation(3.1415,0, 0,1.0)];

    basic1.duration =2;

    basic1.repeatCount =2;

    basic1.cumulative =YES;//是否继续接着执行

  

    [myview1.layeraddAnimation:basic1 forKey:@"animatio1"];


自定义图层

    //创建一个图层

    CALayer *layer = [CALayerlayer];

    //设置尺寸

    layer.bounds =CGRectMake(0,0, 100,100);

    //设置位置

    layer.position =CGPointMake(100,100);

    //设置颜色

    layer.backgroundColor = [UIColorredColor].CGColor;

    //设置内容

    layer.contents = (__bridgeid)[UIImageimageNamed:@"imageName"].CGImage;

    [self.view.layeraddSublayer:layer];


0 0