iOS 开发中经常需要使用 xib/storyboard 配合 AutoLayout 来做一些界面的布局适配工作,其中 UILabel、UIButton、UIImageView 等系统控件,在使用相对布局时候只指定位置不指定大小也可以正常工作,原因就是其借助 intrinsic content size 功能加了几条隐式的约束,辅助确定其大小。
我们自定义的视图也可以实现这种自适应大小,在使用 xib/storyboard 时简化我们设置布局,特别是简化对于“出现多个视图放不下需要考虑优先压缩那个视图”的处理,只需要通过控制 content compression resistance 优先级就可以
class AutoSizeView: UIView {
override var intrinsicContentSize: CGSize {
return CGSize( 100, height: 200)
}
}
在xib中该试图选择placehoder