iOS 中的锚点 anchorPoint

759 阅读1分钟

在iOS中,我们面对最多的是UIView,而对于CALayer的操作就相对少很多,对于layer中的锚点anchorPoint今天做一次记录学习。

UIViewCenterCALayerposition都指定了anchorPoint在父视图中的位置,CALayer通过positionanchorPoint控制frame的位置。

首先我们要了解的是,anchorPointpostition 是重合的。怎么理解呢?
默认情况下,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)

pic0.png

  • 为什么红色的那么小呢?

其实两个正方形的大小是一样大的,只不过红色的没有显示完全。 红图的position是(0, 0),anchorPoint值为(0.5, 0.5),所以红图的中心点现在位于(0, 0)的位置,即anchorPointposition重合。

视图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)

pic1.png 这次修改position和anchorPoint,此时红图已经完全显示出来了,并且向右移动了49像素。

学习资料