CGAffineTransform 不影响自动布局

CGAffineTransform does not effect autolayout

最近我一直在使用 CGAffineTransformCATransform3D 处理视图和图层。当我在图层级别尤其是视图级别应用转换时,自动布局不应该更新相关视图的框架。例如,考虑以下布局 |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()

转换不会影响视图的 FrameBounds,否则框架将处于未定义状态。为了说明这一点:图像你有一个矩形视图,框架为 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 不执行任何更新。