使用代码创建AutoLayout约束
使用代码创建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约束的更多相关文章
- 利用代码添加autolayout约束
1.概述 通常我们通过storyboard能够完成的,代码也能够完成,所以这里介绍下代码实现约束的添加,通常我们不这么干(在不使用第三方框架的情况下,使用系统自带的类添加约束特别繁琐),所以这里仅仅简 ...
- Sql Server——运用代码创建数据库及约束
在没有学习运用代码创建数据库.表和约束之前,我们只能用鼠标点击操作,这样看起来就不那么直观(高大上)了. 在写代码前要知道在哪里写和怎么运行: 点击新建查询,然后中间的白色空白地方就是写代码的地方了. ...
- 【原】iOS学习之苹果原生代码实现Autolayout和VFL语言
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个 ...
- 代码实现Autolayout
代码实现Autolayout的步骤 利用NSLayoutConstraint类创建具体的约束对象 添加约束对象到相应的view上 - (void)addConstraint:(NSLayoutCons ...
- 史上比较用心的纯代码实现 AutoLayout
入职有两三个月了吧,都是使用 Objective-C 纯代码(虽然有时候偷偷参杂一些 Swift 开源库)来编写公司APP,写布局的时候几乎都是要么在初始化的时候用 initWithFrame,要么就 ...
- 如何优雅的代码编写 AutoLayout
概述 使用 Objective-C 纯代码编写 AutoLayout,看 AutoLayout 的字面理解就是自动布局,听起来好像蛮屌的样子.说白了就是适配:适应.兼容各种不同的情况,包括不同版本的操 ...
- Auto Layout之创建布局约束
上篇文章给大家介绍了AutoLayout 的由来及OC中关于AutoLayout 的类.这篇文章将向大家介绍,在iOS 编程中怎样使用Auto Layout 构建布局约束. 创建布局约束 创建布局约束 ...
- iOS代码添加视图约束
项目要做这样一个效果的启动页. 考虑到版本号是会不断变更的,因此采用动画效果启动页,让版本号动态加载iOS启动页动画效果 - 简书 考虑到屏幕适配问题,因此采用代码对视图添加约束.在添加约束的过程中遇 ...
- 代码创建数据库_表--SqlServer数据库
/*1.创建数据库的时候需要设置的基本属性: 数据库名称 逻辑名称 初始大小 文件增长 路径*/ --语法: -- create database 数据库名称 -- on [primary]--创建数 ...
随机推荐
- mysql 动态sql语句
; SET @ss = ' INSERT INTO prod_attr SELECT ? AS prod_id,A.* FROM ( SELECT 1 AS attr_id,\'中国出版社\' AS ...
- 异步调试神器Slog,“从此告别看日志,清日志文件了”
微信调试.API调试和AJAX的调试的工具,能将日志通过WebSocket输出到Chrome浏览器的console中 — Edit 92 commits 4 branches 3 releases ...
- flex的Accordion组件头部文本居中显示
flex的Accordion组件头部文本默认是居左的,可以通过设置headerStyleName属性使之居中,另外还可以设置字体的样式等 <?xml version="1.0" ...
- 从 github 执行 git clone 一个大的项目时提示 error: RPC failed
目前克隆一个比较大的项目,出现RPC failed的错误 Cloning into 'bigfiles'... remote: Counting objects: 190, done. remote: ...
- navicat for mysql 10.1.7注册码
终于找到一个可用的了:名,组织,注册码都是:NAVN-LNXG-XHHX-5NOO 还有一个 注册码:NAVH-WK6A-DMVK-DKW3名称和组织不用填写 好像都可以用
- web前端性能概述
1.认识前端性能 不管你的网站设计的有多好,后端有多好,对于用户来说全部都是无感知的,用户只关心页面打开的速度,而前端性能表现很大程度上影响着用户的这种感知. 改善前端的性能对用户感知的整体性能提升有 ...
- pureftpd安装配置[总结]
http://www.ttlsa.com/linux/how-to-install-pureftpd/ 看了这篇文章[几个小坑]总结如下: 1.最重要的一点,代码不要复制,有些符号肉眼看不出来. ./ ...
- 新建android项目报错,代码中找不到错误
通过网上资料的引导,做以下操作: 1.进入C:\Documents and Settings\Administrator\.android 删除路径下的debug.keystore及 ddms.cfg ...
- Scrum 的相关概念
Scrum 的相关概念 4.1 Scrum 的起源 Scrum 是一种灵活的敏捷软件开发管理过程,这个名词来源于英式橄榄球.Scrum方法由Ken Schwaber和Jeff Sutherland ...
- Python的深拷贝与浅拷贝
一.前奏:熟悉Python内存管理 在Python中,变量在第一次赋值时自动声明,在创建—也就是赋值的时候,解释器会根据语法和右侧的操作数来决定新对象的类型. 引用计数器:一个内部跟踪变量 引用计数: ...