最近,我一直在视图和图层上使用CGAffineTransform
和CATransform3D
。当我在图层级别(尤其是视图级别)应用转换时,不应自动布局以更新相关视图的框架。例如,考虑以下布局|H:[ViewA]-[ViewB]|
。如果我仅对ViewA
应用转换。
//We can either
ViewA.transform = CGAffineTransformMakeScale(1.5, 1.5)
ViewA.layer.transform = CATransform3DMakeScale(1.5, 1.5, 1.0)
ViewB
不应自动调整它,因为转换后ViewA
的高度,宽度或位置已更改。我也试过打电话self.view.layoutIfNeeded()
最佳答案
转换不会影响视图的Frame
或Bounds
,否则框架将处于未定义状态。为了说明这一点:图像具有一个矩形视图,其框架为X:10,Y:10,W:100,H:100,并将其旋转45度...框架应该是什么?
来自Apple的有关transformation的文档:
如果此属性不是恒等变换,则框架的值
属性未定义,因此应忽略。
这解释了为什么AutoLayout不执行任何更新。
关于ios - CGAffineTransform不影响自动布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38870218/