iOS--同级Layer改变显示顺序 ( calayer  zPosition ) 与坐标系转换

1. Layer在将Point,Rect改变参考系的方法

   图层的pointRect可以以不同参考系进行坐标转换

    图层在图层树当中 也是相对于福涂层按层级关系放置的,一个图层的Position依赖于它父视图的bounds, 如果父图层发生了移动,它的所有子图层也会跟着移动。

    

    移动根图层会将它的子图层作为一个整体来移动,但是有时候也需要图层的绝对位置,或者相对于非父图层的位置;

    CALayer给不同坐标系之间的图层转换 提供工具类方法

   

    1.- (CGPoint)convertPoint:(CGPoint)point fromLayer:(CALayer *)layer;  Layer的坐标转为self

    

    2.- (CGPoint)convertPoint:(CGPoint)point toLayer:(CALayer *)layer;  self的转为Layer

    

    3.- (CGRect)convertRect:(CGRect)rect fromLayer:(CALayer *)layer;

    

    4.- (CGRect)convertRect:(CGRect)rect toLayer:(CALayer *)layer;

    


2. zPosition  是改变图层的显示顺序

    CALayer * layer1 = [[CALayer alloc] init];

    layer1.frame = CGRectMake(0, 0, 150, 150);

    layer1.backgroundColor = [UIColor redColor].CGColor;

    

    

    CALayer * layer2 = [[CALayer alloc] init];

    layer2.frame = CGRectMake(50, 50, 150, 150);

    layer2.backgroundColor = [UIColor blueColor].CGColor;

    

    

    

    layer1.zPosition = 1;   //正数  相机位置靠近

    self.view.layer.zPosition = 0.5;

    layer2.zPosition = 2;

    

    [self.testview.layer addSublayer:layer1];

    [self.testview.layer addSublayer:layer2];

    

    

    //1. zPosition的位置默认为 0.0

    //2. 父子layer无法通过zPosition调整位置,父Layer永远先画出来,且在子Layer的下面

    //3. 兄弟Layer可以通过zPosition来调整显示顺序, 整数表示靠近相机,显示在上面

 

        

  //默认zPosition都是0

    NSLog(@"%f, %f, %f", layer1.zPosition, layer2.zPosition, self.testview.layer.zPosition);

    

        Z坐标轴  zPosition  anchorPointZ

    UIView的坐标轴是二维坐标系, CALayer存在一个三维空间中。Layer将通过zPositionanchorPoint两个浮点数在z轴上描述图层位置。

    

    1. Layer虽然处于三维中,但是Layer是一个完全扁平的对象;

    2. zPosition最实用的功能是改变图层的显示顺序.

       图层是根据他们子图层的subLayers出现的顺序来绘制的(依次绘制)。所以先添加的Layer会被画在最下面,被后面添加的Layer覆盖。但是zPosition可以调整图层向着相机方向前置,于是zPosition可以调整显示位置;

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值