在iOS中,我们面对最多的是UIView,而对于CALayer的操作就相对少很多,对于layer中的锚点anchorPoint今天做一次记录学习。
UIView的Center和CALayer的position都指定了anchorPoint在父视图中的位置,CALayer通过position和anchorPoint控制frame的位置。
首先我们要了解的是,anchorPoint 和 postition 是重合的。怎么理解呢?
默认情况下,anchorPoint的值是(0.5, 0.5)表示视图的中心。
视图1
let backView = UIView(frame: CGRect(x: 150, y: 0, width: 100, height: 100))
backView.backgroundColor = .orange
view.addSubview(backView)
let backLayer = CALayer()
backLayer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
backLayer.backgroundColor = UIColor.red.cgColor
view.layer.addSublayer(backLayer)
print(backLayer.position)
/// 打印结果 (0.0, 0.0)
- 为什么红色的那么小呢?
其实两个正方形的大小是一样大的,只不过红色的没有显示完全。 红图的
position是(0, 0),anchorPoint值为(0.5, 0.5),所以红图的中心点现在位于(0, 0)的位置,即anchorPoint和position重合。
视图2
接下来修改红图的锚点
let backLayer = CALayer()
backLayer.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
backLayer.backgroundColor = UIColor.red.cgColor
view.layer.addSublayer(backLayer)
backLayer.position = CGPoint(x: 49, y: 0)
backLayer.anchorPoint = CGPoint(x: 0, y: 0)
print(backLayer.position)
这次修改position和anchorPoint,此时红图已经完全显示出来了,并且向右移动了49像素。