CALayer和position和anchorPoint

来源:互联网 发布:淘宝代运营提成几个点 编辑:程序博客网 时间:2024/05/01 22:11

CALayer和position和anchorPoint

CALayer :负责视图中显示内容和动画

UIView:负责监听和响应事件


UIVIew创建的时候,会自动创建一个图层,图形都会绘制在上面,然后复制一份给屏幕,就完成了view的显示;


CALayer的属性:

self.imageView.layer.borderwidth=5;边框宽度

borderColor=[UIColor redColor].CGcolor;边框颜色

Cornerradius=50;圆角

layer.maskToBounds=YES;超出部分裁剪掉;

layer.shadowcolor;阴影颜色;

layer.shadowOffset=CGSizeMake(10,10);阴影偏移

layer.shadowopacity=0.5;阴影透明度;

layer.shadowRadius=10;阴影模糊度;

如果要出现带阴影的圆环,需要绘图操作;



=======================

手动创建layer图层添加到view的图层上

    //手工创建CALayer

    CALayer * redLayer = [CALayerlayer];

    

    //设置背景颜色

    redLayer.backgroundColor = [UIColorgreenColor].CGColor;

    

    //设置frame position可以理解为center

    redLayer.position = CGPointMake(200, 200);

    

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

    

    //添加

    [self.view.layeraddSublayer:redLayer];

    

    //设置圆角

    

//    redLayer.cornerRadius = 50;

    

    //设置透明度 (0---1)

//    redLayer.opacity = 0.3;

    

    //设置内容

    redLayer.contents = (__bridgeid_Nullable)([UIImageimageNamed:@"img01"].CGImage);

    

    //设置圆角

    redLayer.cornerRadius = 50;

    

    //加边框

    redLayer.borderWidth = 5;

    redLayer.borderColor = [UIColorredColor].CGColor;

    

    redLayer.masksToBounds= YES;


======================================

position和anchorPoint的区别


//手工创建

    CALayer * myLayer = [[CALayeralloc]init];

    

    //设置背景颜色

    myLayer.backgroundColor = [UIColorredColor].CGColor;

    

    //设置位置和大小

    myLayer.position = CGPointMake(50, 50);

    

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

    

    //设置锚点 (position决定layer在父视图的位置  anchorPoint决定了position在自身的位置) anchorPoint的取值范围 (0---1) 默认 (0.5,0.5)

    myLayer.anchorPoint = CGPointMake(0, 1);

    

    [self.view.layeraddSublayer:myLayer];



=========================

calayer 的transform属性


- (void)viewDidLoad {

    [superviewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    //手工创建

    CALayer * redLayer = [CALayerlayer];

    

    //设置背景颜色

    redLayer.backgroundColor = [UIColorredColor].CGColor;

    

    //位置和大小

    redLayer.position = CGPointMake(100, 100);

    

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

    

    [self.view.layeraddSublayer:redLayer];

    

    self.redLayer = redLayer;

}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event

{

    //旋转

//    self.redLayer.transform = CATransform3DRotate(self.redLayer.transform, M_PI_4, 1, 1, 0);

    

//    self.redLayer.transform = CATransform3DMakeRotation(M_PI_4, 0, 0, 1);

    

    //KVC

//    NSValue * value = [NSValue valueWithCATransform3D:CATransform3DRotate(self.redLayer.transform, M_PI_4, 100, 0, 0)];

//    

//    [self.redLayer setValue:value forKeyPath:@"transform"];

    

    [self.redLayersetValue:@(M_PI_4)forKeyPath:@"transform.rotation.x"];

    

}

- (void) test02

{

    //缩放

    //    self.redLayer.transform = CATransform3DScale(self.redLayer.transform, 1, 1, 0.5);

    //    self.redLayer.transform = CATransform3DMakeScale(0.5, 0.5, 1);

    //KVC

    //    NSValue * value = [NSValue valueWithCATransform3D:CATransform3DScale(self.redLayer.transform, 0.5, 0.5, 1)];

    //

    //    [self.redLayer setValue:value forKeyPath:@"transform"];

    

    [self.redLayersetValue:@0.5forKeyPath:@"transform.scale.x"];

}

- (void) test01

{

    //平移

    //    self.redLayer.transform = CATransform3DTranslate(self.redLayer.transform, 50, 0, 0);

    //    self.redLayer.transform = CATransform3DMakeTranslation(50, 50, 0);

    

    //KVC

    

    //    NSValue * value = [NSValue valueWithCATransform3D:CATransform3DTranslate(self.redLayer.transform, 50, 50, 0)];

    //

    //    [self.redLayer setValue:value forKeyPath:@"transform"];

    

    //    [self.redLayer setValue:@50 forKeyPath:@"transform.translation.y"];

}



0 0
原创粉丝点击