为这样的UIView支持纵向和横向:
+-------------------+ | +---------------+ | | | | | | | Fixed | | | | size | | | | Square | | | | | | | +---------------+ | Protrait | +---------------+ | | | Flexible C | | | +---------------+ | | +---+ +---+ | | | A | | B | | | +---+ +---+ | +-------------------+ +----------------------------------+ | +---------------+ +------------+ | | | | | Flexible | | | | Fixed | | C | | | | size | +------------+ | | | Square | +---+ +---+ | | | | | A | | B | | | +---------------+ +---+ +---+ | +----------------------------------+ Horizontal
我是否需要在willRotateToInterfaceOrientation中手动重新定位子视图?或者Autolayout可以自动为我做吗?
> B是一个始终位于右下方的按钮
> A是相对于B定位的按钮(最好与C的左侧对齐)
> C代表文字,大小灵活
> A和B低于C
解决方法
在这种情况下,您应该能够自动完成大部分布局工作,但在旋转时稍微调整一下.
我建议在另一个UIView中包含视图A,B和C.这样,取决于方向的布局与灵活大小的布局是分开的.它还使编码更简单!
然后你布局方形视图和容器视图有点像这样:
H:|-10-[squareView] V:|-10-[squareView] H:[containerView]-10-| V:[containerView]-10-| squareView.width == squareView.height
请注意,方形视图始终与superview的左侧和顶部对齐,而容器视图与底部和右侧对齐.对于纵向方向,您可以添加以下约束:
V:[squareView]-10-[containerView] H:[squareView]-10-| H:|-10-[containerView]
对于横向方向,您可以反转这些约束:
H:[squareView]-10-[containerView] V:[squareView]-10-| V:|-10-[containerView]
这仅适用于整体布局,因此容器视图的子视图的灵活大小由您决定.希望这可以帮助!