3.1 布局
- UIView的center属性和CALayer的position属性对应,且代表的值都一样
- frame和center(position)都是外部坐标,bounds是内部坐标
- “图层做变换的时候,比如旋转或者缩放,frame实际上代表了覆盖在图层旋转之后的整个轴对齐的矩形区域,也就是说frame的宽高可能和bounds的宽高不再一致了”
3.2 锚点(这篇文章讲得很清楚)
锚点anchorPoint的最大作用就是结合position来确定子图层在父图层的位置,比起计算frame.origin要方便得多
- 先设置自身的anchorPoint(坐标系统为单位),这个点就会代表以后position所在的那个点
- 然后去父坐标系中确定position想代表的那个点
3.3 坐标系
- 和UIView一样,图层也可以转换坐标系
- Z坐标轴
和UIView严格的二维坐标系不同,CALayer存在于一个三维空间当中。除了我们已经讨论过的position和anchorPoint属性之外,CALayer还有另外两个属性,zPosition和anchorPointZ。zPosition的两大功能就是一改变图层的显示顺序和二CATransform3D变换(在三维空间移动和旋转图层)
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *greenView;
@property (nonatomic, weak) IBOutlet UIView *redView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//不需要增加太多,视图都非常地薄,所以给zPosition提高一个像素就可以让绿色视图前置,当然0.1或者0.0001也能够做到,但是最好不要这样,因为浮点类型四舍五入的计算可能会造成一些不便的麻烦
self.greenView.layer.zPosition = 1.0f;
}
@end
注意:zPosition可以明显改变屏幕上图层的顺序,但不能改变事件传递的顺序
网友评论