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

  • 相关阅读:
    仿佛看到了曾经在电子厂的自己
    TP5 condition 多个条件如何写
    电子数据时代我该如何保存我的数据?
    Shell脚本查询磁盘数量
    缺少维生素?
    html5的页面在IOS中,按钮 变成圆角怎么办?
    生物信息数据分析准则
    用variant的数据来推导基因表达 | Imputation of Expression Using PrediXcan
    Rare-Variant Association Analysis | 罕见变异的关联分析
    英语语法
  • 原文地址:https://www.cnblogs.com/motoyang/p/5352666.html
Copyright © 2011-2022 走看看