作为 UIStackView 的子视图的视图不能旋转

View as a subview of UIStackView cannot be rotated

我有一个UIStackView,里面有一个叫A的子视图。我想旋转视图A。但是没有任何反应。我可以旋转A的层,没关系。那么如何制作UIStackView的子视图动画呢?

将 "arranged subview" 添加到堆栈视图后,其框架将由堆栈视图隐式添加的约束自动管理。虽然您可以假设添加可以动画化的额外约束,但没有一组约束可以让您完成旋转。

一个解决方案是在堆栈管理的视图中嵌套另一个视图。然后,您可以覆盖外部视图中的 layoutSubviews 以选择退出内部视图的自动布局,这样您就可以管理其旋转。无论您在那里对内部视图的框架进行什么更新,都可以放置在动画块中。

编辑:

根据 transform 属性 或 UIView 的文档,"In iOS 8.0 and later, the transform property does not affect Auto Layout. Auto layout calculates a view’s alignment rectangle based on its untransformed frame." 这似乎意味着即使存在自动布局约束,旋转也应该有效.也就是说,我的猜测是转换视图实际上只是转换底层的一种便利。