NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY
NSLayoutConstraint.constraintsWithVisualFormat详解,以及AlignAllCenterY
鉴于苹果官方文档的解释很多人(包括我)都没看懂,今天我详细的实验了一下,得出的结论做个记录,欢迎大神们更正。
首先看一下官方文档的解释
format 参数是一个 String,描述你在横向或者竖向的views 的约束,如"H:|-10-[buttonA]-20-[buttonB]",如果前面那个 “H”不写的话,默认是 H,即 Horizontal(横向)。
opts参数是一个可选的值,表示 你前面写的这个 format 的所有([]包含的 View)的一个取向,比如:图2里的 superView,buttonA,buttonB 的的 CenterY 都相等(这是主要的研究成果),而且,同一方向这个属性只能设一次,再设的话编译器会报错。
metrics(可选), 这个参数是可以在前面的堆 string 中插入数值,如图3
views,即是[]里面的 view 了
好了,说完这个,要说一下今天的主角AlignAllCenterY。
基于现在的 iOS8.0,NSLayoutConstraint.constraintsWithVisualFormat对居中的体验还是比较差,如果觉得自己想节省时间的话,建议直接用NSLayoutConstraint的默认构造方法。
根据上面所说的opts,直接可以用它来实现居中,看图4
图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的更多相关文章
- NSLayoutConstraint 使用详解 VFL使用介绍
注意 使用前必须先取消所有的你想设置View 的 Autoresizing 属性 因为 Autoresizing Layout不能共存 系统默认是 Autoresizing for v in su ...
- 【转】IOS AutoLayout详解(三)用代码实现(附Demo下载)
转载自:blog.csdn.net/hello_hwc IOS SDK详解 前言: 在开发的过程中,有时候创建View没办法通过Storyboard来进行,又需要AutoLayout,这时候用代码创建 ...
- AutoLayout详解+手把手实战(转载)
首先说一下这篇博客虽然是标记为原创,但是事实并非本人亲自写出来的,知识点和例子本人花了一天各处查 找和整理最终决定写一个汇总的详解,解去各位朋友到处盲目查找的必要,因为不是转载某一个人的内容,故此不标 ...
- iOS:Masonry练习详解
Masonry练习详解 添加约束的方式: 1.通过使用NSLayoutConstraints添加约束到约束数组中,之前必须设置translatesAutoresizingMaskIntoConst ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
随机推荐
- C#箴言:定义常量的两种方法
在C#中定义常量的方式有两种, 一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant). 前者用"const"来定义 ...
- 进击python第一篇:相遇
1.第一句Python代码 在 当前目录下创建 hello.py 文件,内容如下: print "hello,world!" 执行 hello.py 文件,即: python he ...
- 康少带你python项目从部署到上线云服务器
首先,服务器要安装nginx和mysql,网站文件建议放在/usr/local/www,环境python3.6+mysql5.7,阿里云的服务器可以用公共镜像有一个配置好的,不然就自己装一下环境吧. ...
- 【渗透测试】如何利用burpsuite测试无回显漏洞
前面的文章讲了在windows和linux上的不同的无文件渗透测试的方法,那么这篇文章给大家讲解如何在漏洞没有回显的情况下,利用burpsuite自带插件进行测试的方式. 首先我们稍微提一下有哪些无回 ...
- 第三篇 Nosql讲解之windows下Memcached和Memcache的区别安装(二)
一.Memcached和Memcache的区别: 网上关于Memcached和Memcache的区别的理解众说纷纭,我个人的理解是: Memcached是一个内存缓存系统,而Memcache是php的 ...
- 黑马Stream流学习 Stream流 函数式接口 Lambda表达式 方法引用
- JavaScript 对象的原型扩展(JS面向对象中的继承)
<script type="text/javascript"> function person(name, age) { this._name = name; this ...
- 字符条件变成in条件格式数据
private string getInQuerySql(string query) { string resulr = ""; foreach (var item in quer ...
- python之yagmail发送邮件
yagmail发送邮件 import yagmail yag = yagmail.SMTP(user="xxxxxxxxxx@163.com",password="xxx ...
- 牛客寒假5-J.炫酷数学
链接:https://ac.nowcoder.com/acm/contest/331/J 题意: 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式子对 ...