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


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

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

        图层在图层树当中 也是相对于福涂层按层级关系放置的,一个图层的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将通过zPosition和anchorPoint两个浮点数在z轴上描述图层位置。

        

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

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

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

      

  • 相关阅读:
    获取计算机名称
    imagelist用法
    cxgrid的ImageComboBox属性学习
    MlskincolorButton使用方法
    delphi实现窗体组建随窗体大小改变而改变
    判断路径下文件是否存在
    Delphi 按Esc快捷键退出程序的简单方法
    pagecontrol
    LinkedList源码解析
    ArrayList源码分析
  • 原文地址:https://www.cnblogs.com/liuxiaokun/p/12706335.html
Copyright © 2020-2023  润新知