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

NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY的更多相关文章

  1. NSLayoutConstraint 使用详解 VFL使用介绍

    注意 使用前必须先取消所有的你想设置View 的 Autoresizing 属性 因为 Autoresizing  Layout不能共存  系统默认是 Autoresizing for v in su ...

  2. 【转】IOS AutoLayout详解(三)用代码实现(附Demo下载)

    转载自:blog.csdn.net/hello_hwc IOS SDK详解 前言: 在开发的过程中,有时候创建View没办法通过Storyboard来进行,又需要AutoLayout,这时候用代码创建 ...

  3. AutoLayout详解+手把手实战(转载)

    首先说一下这篇博客虽然是标记为原创,但是事实并非本人亲自写出来的,知识点和例子本人花了一天各处查 找和整理最终决定写一个汇总的详解,解去各位朋友到处盲目查找的必要,因为不是转载某一个人的内容,故此不标 ...

  4. iOS:Masonry练习详解

    Masonry练习详解   添加约束的方式: 1.通过使用NSLayoutConstraints添加约束到约束数组中,之前必须设置translatesAutoresizingMaskIntoConst ...

  5. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  6. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  7. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  8. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  9. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

随机推荐

  1. hdu 4694 Important Sisters【支配树】

    求出支配树输出到father的和即可 支配树见:https://blog.csdn.net/a710128/article/details/49913553 #include<iostream& ...

  2. [Xcode 实际操作]二、视图与手势-(2)UIView视图的层次关系

    目录:[Swift]Xcode实际操作 本文将演示创建三个视图对象,其中第二个视图是第三个视图的父视图. 现在开始编写代码,实现这项功能 import UIKit class ViewControll ...

  3. [Xcode 实际操作]二、视图与手势-(10)UITapGestureRecognizer手势之单击

    目录:[Swift]Xcode实际操作 本文将演示使用视图的手势功能,完成视图的交互操作. import UIKit class ViewController: UIViewController { ...

  4. 阿里mavne中央仓库

    https://www.cnblogs.com/ae6623/p/4416256.html 待整理

  5. 转 open_cursors参数设置调优

    https://www.cnblogs.com/Peyton-for-2012/archive/2013/05/07/3065058.html

  6. override和overload的小笔记

    override是覆盖的意思,也就是我们的重写.可以重写覆盖父类的方法,然后实现接口的方法也可以叫做override. 几个要注意的点: 重写一定要用和被重写方法同样的方法名还有参数列表. 抛出的异常 ...

  7. 使用em和rem替代px

    rem是指根元素的字体大小,默认情况下html的字体大小为:16px=1rem.而em是相对单位,是基于它的祖先元素计算的. 如果我们不指定html和body的字体大小,要得到12px的rem需要这样 ...

  8. asp.net中,跳转页面的几种方式

    js方式的页面跳转1.window.location.href方式    <script language="javascript" type="text/java ...

  9. AmazeUI 保存浏览器数据 永久性

    //保存永久缓存数据function SaveAmuiStore(ItemName, ItemData){ if (window.localStorage) { var store = $.AMUI. ...

  10. AJPFX分享java排序之希尔排序

    (1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每 ...