• 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,即被更高优先级的约束取代了。

  • 相关阅读:
    冗余链接-684-并查集
    Chrome浏览器进程
    BFC布局规则
    Front-end 前端优化总结
    Flex弹性布局
    Browse兼容性问题
    组合关系与组合模式
    YUI3组件框架之plugin
    javascript数据类型及转换
    矩阵打印
  • 原文地址:https://www.cnblogs.com/motoyang/p/5352666.html
Copyright © 2020-2023  润新知