使用代码创建AutoLayout约束

1.代码创建约束的步骤

2.代码创建约束的常用方法

3.代码创建约束的原则

4.禁用Autoresizing的原因

5. 设置相对状态栏的约束,使用self.topLayoutGuide

6.通过AutoLayout实现动画

拿到高度约束(self.viewHconstraint)--修改constant值(self.viewHconstraint += 100;)--在动画中[view layoutIfNeeded]。

7.关于自动布局的相关知识总结:

7.1  Autoresizing和AutoLayout是互斥的,每次只能使用其中一个。Xib/Storyboard默认使用AutoLayout,禁用了Autoresizing。但是使用代码给UI控件添加约束时,Autoresizing默认是打开的,需通过view.translatesAutoresizingMaskIntoConstraints = NO;关闭Autoresizing,才能在代码中使用AutoLayout。

7.2 Autoresizing只能设置某控件和它父控件之间的约束关系,AutoLayout可设置父子控件/兄弟控件等所有的约束。以后的项目都只使用AutoLayout技术。

7.3 Autoresizing外面框框代表父控件,里面框框代表当前选中的控件。另外还有6根线,外面的4根线如果选中,表示子控件与父控件上下左右的间距无论在任何屏幕下都保持现在的值。里面的2根线如果被选中,说明子控件的尺寸(宽高)会随着父控件尺寸变化而变化。

7.4 SizeClass是ios8以后出现的新技术,若兼容以前版本则不能用。SizeClass将屏幕分为9种类型,可设置在不同屏幕下是否install某UI控件、在不同屏幕下给同一控件设置不同的约束,给同一图片框设置不同的图片,给同一控件设置在不同的字体。

7.5 使用AutoLayout添加约束时,在xib中选中一条约束,点击属性查看器,发现有个priority(优先级,取值为1-1000,常用required1000,high750,lower50三种),表示在设置同一尺寸时,如果多条约束发生冲突,则以优先级高的为准。

8. UIButton,UISwitch,UITextField,UILabel,UIImageView等控件,在使用AutoLayout布局时只需设置x,y值,不设置宽高都可以,因为这些控件都有默认的宽和高。对于UIButton,它的宽高会根据里面的imageView和textLabel自动调整,如果给UIButton设定了很长的宽度,但是它里面的textLabel的宽度仍会根据文字来自动调整。

9.  iOS程序运行时屏幕的真实大小由启动图片决定(Launch.xib运行起来后会截图保存为启动图),如果最大尺寸的启动图设置为4inch(320*568)的,那么就算在4.7inch(375*667)和5.5inch(414*736)的屏幕上运行时,依旧将屏幕划分成320*568等分,这样顶多会导致图片变大或者模糊。

  如果图片大小本身并没有按照 iPhone6 和 6p 来做(比6和6p 的尺寸要小), 解决方法是:把启动图片改成使用 LaunchImage的方式, 这样的话在6和6p 下实际尺寸也是4inch 的尺寸,所以可以实现“假适配”。

使用代码创建AutoLayout约束的更多相关文章

  1. 利用代码添加autolayout约束

    1.概述 通常我们通过storyboard能够完成的,代码也能够完成,所以这里介绍下代码实现约束的添加,通常我们不这么干(在不使用第三方框架的情况下,使用系统自带的类添加约束特别繁琐),所以这里仅仅简 ...

  2. Sql Server——运用代码创建数据库及约束

    在没有学习运用代码创建数据库.表和约束之前,我们只能用鼠标点击操作,这样看起来就不那么直观(高大上)了. 在写代码前要知道在哪里写和怎么运行: 点击新建查询,然后中间的白色空白地方就是写代码的地方了. ...

  3. 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言

    1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...

  4. 代码实现Autolayout

    代码实现Autolayout的步骤 利用NSLayoutConstraint类创建具体的约束对象 添加约束对象到相应的view上 - (void)addConstraint:(NSLayoutCons ...

  5. 史上比较用心的纯代码实现 AutoLayout

    入职有两三个月了吧,都是使用 Objective-C 纯代码(虽然有时候偷偷参杂一些 Swift 开源库)来编写公司APP,写布局的时候几乎都是要么在初始化的时候用 initWithFrame,要么就 ...

  6. 如何优雅的代码编写 AutoLayout

    概述 使用 Objective-C 纯代码编写 AutoLayout,看 AutoLayout 的字面理解就是自动布局,听起来好像蛮屌的样子.说白了就是适配:适应.兼容各种不同的情况,包括不同版本的操 ...

  7. Auto Layout之创建布局约束

    上篇文章给大家介绍了AutoLayout 的由来及OC中关于AutoLayout 的类.这篇文章将向大家介绍,在iOS 编程中怎样使用Auto Layout 构建布局约束. 创建布局约束 创建布局约束 ...

  8. iOS代码添加视图约束

    项目要做这样一个效果的启动页. 考虑到版本号是会不断变更的,因此采用动画效果启动页,让版本号动态加载iOS启动页动画效果 - 简书 考虑到屏幕适配问题,因此采用代码对视图添加约束.在添加约束的过程中遇 ...

  9. 代码创建数据库_表--SqlServer数据库

    /*1.创建数据库的时候需要设置的基本属性: 数据库名称 逻辑名称 初始大小 文件增长 路径*/ --语法: -- create database 数据库名称 -- on [primary]--创建数 ...

随机推荐

  1. lucene 3.0.2 中文分词

    package lia.meetlucene; import java.io.IOException; import java.io.Reader; import java.io.StringRead ...

  2. NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1

    Issue NBU7.0 Image Cleanup作业在没有配置hot catalog backup的情况下失败,Status=1 Error NBU7.0 Image Cleanup作业失败, D ...

  3. GDUT——1169: Krito的讨伐(优先队列BFS)

    1169: Krito的讨伐 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 619  Solved: 102 Description Krito终于干 ...

  4. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  5. Memcached 笔记与总结(5)Memcached 的普通哈希分布和一致性哈希分布

    普通 Hash 分布算法的 PHP 实现 首先假设有 2 台服务器:127.0.0.1:11211 和 192.168.186.129:11211 当存储的 key 经过对 2 (2 台服务器)取模运 ...

  6. PHP 错误与异常 笔记与总结(11 )register_shutdown_function() 函数的使用

    通过 register_shutdown_function 方法,可以让我们设置一个当执行关闭时可以被调用的另一个函数. 也就是说,当我们的脚本执行完成或者意外死掉导致 php 执行即将关闭时,我们的 ...

  7. php常用Stream函数集介绍

    php常用Stream函数集介绍 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-24   本篇文章是对php中的常用Stream函数集进行了详细的分析介绍,需要的朋友参考下     ...

  8. Windows与Linux/Mac系统时间不一致的解决方法

    Windows与Linux/Mac系统时间不一致的解决方法 分类: linux2012-02-12 14:25 1691人阅读 评论(1) 收藏 举报 windowsubuntusystemlinux ...

  9. 尝试使用word发布博客

    尝试使用WORD2010发布博客   使用博客园博客的主要原因在于能够使用live writer,不用每次都打开网页,当然博客园的大牛很多   如果可以使用方法word,当让更爽,格式的问题将不再是问 ...

  10. java语言中数值自动转换的优先顺序

    转换原则:从低精度向高精度转换byte .short.int.long.float.double.char数据类型的转换,分为自动转换和强制转换.自动转换是程序在执行过程中“悄然”进行的转换,不需要用 ...