最近,我一直在视图和图层上使用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的文档:

如果此属性不是恒等变换,则框架的值
属性未定义,因此应忽略。

这解释了为什么AutoLayout不执行任何更新。

关于ios - CGAffineTransform不影响自动布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38870218/

10-10 07:02