zoukankan      html  css  js  c++  java
  • NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY

    NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY

    转载2015-07-08 18:02:02

    鉴于苹果官方文档的解释很多人(包括我)都没看懂,今天我详细的实验了一下,得出的结论做个记录,欢迎大神们更正。

    首先看一下官方文档的解释

    format 参数是一个 String,描述你在横向或者竖向的views 的约束,如"H:|-10-[buttonA]-20-[buttonB]"​,如果前面那个 “H”不写的话,默认是 H,即 Horizontal(横向)。

     opts参数是一个可选的值,表示 你前面写的这个 format 的所有([]包含的 View)的一个取向,比如:图2里的 superView,buttonA,buttonB 的的 CenterY 都相等(这是主要的研究成果),而且,同一方向这个属性只能设一次,再设的话编译器会报错。

    图2
     

    metrics(可选), 这个参数是可以在前面的堆 string 中插入数值,如图3

    图3

    ​views,即是[]里面的 view 了

    ​好了,说完这个,要说一下今天的主角AlignAllCenterY。

    基于现在的 iOS8.0​,NSLayoutConstraint.constraintsWithVisualFormat对居中的体验还是比较差,如果觉得自己想节省时间的话,建议直接用NSLayoutConstraint的默认构造方法。

    根据上面所说的​opts,直接可以用它来实现居中,看图4

    图4
    图5

    图5是效果图

    这样就可以做到全部 view 居中了,什么?不明白,我稍微解释一下

    第一行constraints += NSLayoutConstraint.constraintsWithVisualFormat("[superView]-1@1-[buttonA]-1@1-[buttonB]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: ["superView":self.view, "buttonA":self.buttonA, "buttonB":self.buttonB])

    把 superView,buttonA,buttonB 的​ centerY 都相等了,即横向居中了

    第二行同理。

    而它们之前的距离,都被写了优先级了1,即被更高优先级的约束取代了。

  • 相关阅读:
    PHP——下载图片到本地代码
    PHP接收GET中文参数乱码的原因及解决方案
    防止表单按钮多次提交
    网站页面自动跳转
    php--防止DDos攻击代码
    数据库日期查询存在的问题
    html局部页面打印
    php中::的使用
    php基础:define()定义常数函数
    百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题
  • 原文地址:https://www.cnblogs.com/motoyang/p/5352666.html
Copyright © 2011-2022 走看看