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

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/motoyang/p/5352666.html
Copyright © 2011-2022 走看看