作为 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." 这似乎意味着即使存在自动布局约束,旋转也应该有效.也就是说,我的猜测是转换视图实际上只是转换底层的一种便利。
我有一个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." 这似乎意味着即使存在自动布局约束,旋转也应该有效.也就是说,我的猜测是转换视图实际上只是转换底层的一种便利。