-
AutoLayout
这个技术我不想赘述了,现在直说一些大家不常用到的 -
第一 Priority属性
-
观察Three
Paste_Image.png -
我设置了两条虚线,第一条是距离Two 的 第二条是距离One的
-
设置它们的Priority属性
Paste_Image.png
-
在一个低 一个高的情况下 高的约束先执行
-
当我们点击Hide two按钮的时候 修改Priority属性
@IBAction func hideTwoClick(sender: AnyObject) {
self.twoBtn.hidden = !self.twoBtn.hidden
if self.twoBtn.hidden {
self.threeToTwoConstraint.priority = 750
self.threeToOneConstraint.priority = 999
}else{
self.threeToTwoConstraint.priority = 999
self.threeToOneConstraint.priority = 750
}
}```
- 可以看到如下效果
![AutoLayout_priority.gif](https://img.haomeiwen.com/i189984/bd3efb93ccdacf8c.gif?imageMogr2/auto-orient/strip)
##### 内容约束优先级的使用
![Paste_Image.png](https://img.haomeiwen.com/i189984/74ae35b04c6ca260.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 看下图 我们自己制作一个导航栏
![Paste_Image.png](https://img.haomeiwen.com/i189984/4a8005ffdb550cb4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 现在的需求是关闭按钮有可能消失,title文字不确定。
我们现在给title添加约束 使其左右距离关闭(返回)或者菜单按钮的距离大于0,但是你这样设置后当title文字过多的时候,会把关闭或者返回按钮的宽度挤掉(前提是返回和关闭按钮文字都是动态的宽度),为什么为出现这种问题?是因为返回按钮和关闭按钮内容的优先级低于titleLabel的优先级,我们提高其优先级即可。
我们设置其横向内容优先级为1000
![Paste_Image.png](https://img.haomeiwen.com/i189984/aece08c07c64a6e2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
设置title横向内容优先级为750或者只要低于1000即可
![Paste_Image.png](https://img.haomeiwen.com/i189984/5f6565437cffbea7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 如此 当title文字过多的时候,就会保证在返回按钮文字优先级的前提下适当排列titleLabel的文字了。
- 最后我们设置title距离左右按钮的space大于0 即可。
![Paste_Image.png](https://img.haomeiwen.com/i189984/6cce8e04400b1627.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 第三个问题 由于导航栏上面有状态栏,而我们返回按钮要在状态栏下面的44的高度居中,怎么设置呢?
![Paste_Image.png](https://img.haomeiwen.com/i189984/2a34b82b892430b3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 选择返回按钮 向上拉线 然后选择约束 修改其center.y为42即可,42=20+44/2,即为除去状态栏的中间位置。
###SizeClasses
- 有时候,我们的项目需要支持横屏,那么SizeClasses就派上用场了。
- 关于基础用法,不再赘述,现在只说一个问题,就是在使用SizeClasses的时候,我们选择不同的屏幕模式,来修改UI,其效果是不同的。
- 如果App只适用于竖屏模式,我们只需要选择下面模式,然后加约束即可。
![Paste_Image.png](https://img.haomeiwen.com/i189984/d715680a7cc89e36.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
这种模式下,便可以适应所有的竖屏手机,但是以后产品经理想法变了,想支持横屏,并且UI布局也有变化,那么就无能为力了。我们选择所有横屏发现之前的UI全没了。
![Paste_Image.png](https://img.haomeiwen.com/i189984/16eba7d066636719.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 所以 建议大家在使用SizeClasses的时候,先把必须实现的UI拖拽到下面的模式下,这种模式下的UI无论你怎么切换适配模式,UI都不会丢失。
![Paste_Image.png](https://img.haomeiwen.com/i189984/38ac86c05efdc9fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 然后在需要其他布局的时候,选在不同的屏幕模式约束即可。这样就可以应万变了。。
网友评论