美文网首页iOS开发
UILayout+SizeClasses不常见的使用场景

UILayout+SizeClasses不常见的使用场景

作者: 952625a28d0d | 来源:发表于2016-07-19 16:23 被阅读48次
  • AutoLayout
    这个技术我不想赘述了,现在直说一些大家不常用到的

  • 第一 Priority属性

  • 观察Three


    Paste_Image.png
  • 我设置了两条虚线,第一条是距离Two 的 第二条是距离One的

  • 设置它们的Priority属性


    Paste_Image.png
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)

- 然后在需要其他布局的时候,选在不同的屏幕模式约束即可。这样就可以应万变了。。




相关文章

  • UILayout+SizeClasses不常见的使用场景

    AutoLayout这个技术我不想赘述了,现在直说一些大家不常用到的 第一 Priority属性 观察ThreeP...

  • git常见使用 场景

    给分支 标记tag git checkout branchName切换到 分支 git log查看分支 提交记录i...

  • Android 消息机制详解

    一、常见使用场景 消息机制中主要用于多线程的通讯,在 Android 开发中最常见的使用场景是:在子线程做耗时操作...

  • RxJava的常见使用场景

    demo地址 rx的优势: 线程切换,不需要像handler那样 请求与结果在不同地方 链式编程, 复杂的逻辑形成...

  • Zookeeper的常见使用场景

    1、分布式协调 如何用zk来做分布式协调呢?两个系统异步通信,A系统发送一个消息到B系统,中间可以用mq或者多线...

  • AppGroups数据共享

    常见使用场景1:APP之间数据共享(如账号登录)常见使用场景2:容器APP与扩展应用之间资源共享(如:iMessa...

  • Redis 常见使用场景

    最近一段时间在研究 Redis,Redis 是一个强大的基于 k-v 的非关系行数据库,下面列举下 Redis 常...

  • brew 常见使用场景

    介绍 brew 是mac下的命令行包管理工具 如何安装 brew 参考 https://brew.sh/目前给出的...

  • redis 常见使用场景

    最近在写一个脚手架,发现其中 redis 的使用场景还挺多,于是总结下它的常见使用场景 本文链接: https:/...

  • 使用 stop() 或 clearQueue() 阻止 jQu

    使用 jQuery animation 动画的场景比较常见。譬如鼠标 hover 事件,使用 jQuery ani...

网友评论

    本文标题:UILayout+SizeClasses不常见的使用场景

    本文链接:https://www.haomeiwen.com/subject/fmtfjttx.html