AutoLayout
经验比较重要,如果你设置完不是你想要的样子试试到各控件的标尺选项卡里删掉那些奇奇怪怪的数字,还有hugging和Compression Resistance来设置那些控件优先被拉伸或压缩
如果你需要在代码里添加对控件的约束是可以的,首先你需要定义这样一个变量:
var aspect: NSLayoutConstraint?
接下来使用这个函数来设置约束:
aspect = NSLayoutConstraint( item: constrainedView,//目标View attribute: .Width,//目标属性 relatedBy: .Equal,//目标属性与参考值的关系 toItem: constrainedView,//参考View attribute: .Height,//参考属性 multiplier: newImage.aspectRatio,//乘的倍数 constant: 0)//加的常量最后将约束加到根View上:
view.addConstraint(newConstraint)
也可以移除:
view.removeConstraint(existingConstraint)
对于不同的设备,有regular size和compact size,在StoryBoard的底部有选项,针对不同的Size可以做不同的布局。
在特定的Size下布局时,最好先清除你需要改动的部件之前的约束。之后做的所有约束只和现在选择的Size Class有关, 在特定的Size Class下布局同样可以添加只在这个Size下才有的控件。在这个控件的Attributes Inspector的最底部有相应的选项。这个选项同样可以用于对所有约束的操作。
在布局时,如果你想要把元素和整个View的左右的间距都取消,将leading和trailing都设置为0之后,还要将这两个约束里的first item和second item里的relative to margin都取消才行。