CGAffineTransform 不影响自动布局
CGAffineTransform does not effect autolayout
最近我一直在使用 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 的文档:
If this property is not the identity transform, the value of the frame
property is undefined and therefore should be ignored.
这解释了为什么 AutoLayout 不执行任何更新。
最近我一直在使用 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 的文档:
If this property is not the identity transform, the value of the frame property is undefined and therefore should be ignored.
这解释了为什么 AutoLayout 不执行任何更新。