使用自动布局时,可以利用大小类别。 请参阅以下说明或在此处查看示例:https://github.com/jonaszmclaren/AutolayoutExample
设置图像视图为紧凑的宽度和高度(wC hC-横向iPhone),并为wR hC(横向iPhone Plus)设置为未安装:
文本字段和图像视图之间的约束在wC hC和wR hC上未启用:
最后,在wC hC和wR hC中,您必须定义文本字段的顶部约束-我将其固定到视图的顶部。
这样,肖像模式下将显示图像视图,并将文本视图固定在图像视图上,在横向模式下图像视图将被隐藏,并将文本字段固定在视图顶部。
如果您隐藏图像,它将仅对用户不可见,但屏幕上的空间将被图像使用。更好的方法是在方向更改为横向时将图像高度设置为0。 您可以创建图像高度约束的出口并根据方向进行更改。此方法称为方向更改之前。 您需要创建图像高度约束的出口。
@IBOutlet var heightConstraint : NSLayoutConstraint!
override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval)
{
if toInterfaceOrientation == .landscapeLeft || toInterfaceOrientation == .landscapeRight{
// Imageview height constraint outlate
heightConstraint.constant = 0
}
else{
heightConstraint.constant = 100
}
}
isHidden仅仅改变视图的可见性,而不会将其从该位置移除。为解决这个问题,请创建一个标题视图高度约束的outlet,并在方向更改时将其更改为0。
例如:
headerViewHeightConstraint.constant = 0.0
self.view.layoutIfNeeded()
并在纵向模式下恢复高度。
headerViewHeightConstraint.constant = // height value which you want to set
self.view.layoutIfNeeded()