自动布局之-NSLayoutConstraint
view.translatesAutoresizingMaskIntoConstraints = NO;
一、UIKit框架提供的自动布局的方法一,详细请看参数介绍:
/**
设置约束 @param view1 指定需要添加约束的视图一
@param attr1 指定视图一需要约束的属性
@param relation 指定视图一和视图二添加约束的关系
@param view2 指定视图一依赖关系的视图二;可为nil
@param attr2 指定视图一所依赖的视图二的属性,若view2=nil,该属性设置 NSLayoutAttributeNotAnAttribute
@param multiplier 系数 情况一和二为亲测
情况一:设置A视图的高度 = A视图高度 * multiplier + constant;此时才会起作用;
情况二:设置A视图和其他视图的关系或 toItem=nil,multiplier设置不等于0即可,若等于0会crash;
@param c 常量
@return 返回生成的约束对象
*/
+ (instancetype)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(nullable id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
以上函数设置的约束等价于 view1.att1 =(以等号举栗子,relation可> < ≥≤)view2.attr2 * multiplier + c;
简单小需求:随意在控制器中添加一个红色view:
// 设置 redView 的宽 = 100.f * 1.f
NSLayoutConstraint *redViewWidthConstraint =
[NSLayoutConstraint constraintWithItem:self.redView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:.f
constant:.f];
// 设置 redView 的高 = 100.f * 1.f
NSLayoutConstraint *redViewHeightConstraint =
[NSLayoutConstraint constraintWithItem:self.redView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:.f
constant:.f];
// 设置 redView 的前面(左边) = self.view.leading + 20.f
NSLayoutConstraint *redViewleadingConstraint =
[NSLayoutConstraint constraintWithItem:self.redView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:.f
constant:.f]; // 设置 redView 的顶部
NSLayoutConstraint *redViewTopConstraint =
[NSLayoutConstraint constraintWithItem:self.redView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:.f
constant:.f];
[self.view addConstraint:redViewWidthConstraint];
[self.view addConstraint:redViewHeightConstraint];
[self.view addConstraint:redViewleadingConstraint];
[self.view addConstraint:redViewTopConstraint];
✅举个栗子自动布局之-NSLayoutConstraint的更多相关文章
- IOS页面自动布局 之 NSLayoutConstraint基础篇
使用AutoLayout之前需要知道以下两点: 1.必须设置 translatesAutoresizingMaskIntoConstraints为NO. 2.如果是viewControl则AutoLa ...
- NSLayoutConstraint 使用详解 VFL使用介绍
注意 使用前必须先取消所有的你想设置View 的 Autoresizing 属性 因为 Autoresizing Layout不能共存 系统默认是 Autoresizing for v in su ...
- iOS UI(布局)约束是什么?view1.attr1 = view2.attr2 * multiplier + constant
/* Create constraints explicitly. Constraints are of the form "view1.attr1 = view2.attr2 * mul ...
- iOS原生自动布局NSLayoutConstraint
AutoLayout概念是苹果自iOS6开始引入的概念. 目前为止,实现自动布局技术选型方面也可以使用xib和storyboard.在开发过程中通常登录.注册等变动可能性较小的视图,我会采用xib开发 ...
- iOS开发NSLayoutConstraint代码自动布局
1.NSLayoutConstraint简介 适配界面大多用Masonry工具,也是基于NSLayoutConstraint写的!通过使用两个类方法实现自动布局: + (NSArray<__ki ...
- 使用autolayout的NSLayoutConstraint类中的constraintWithItem 、constraintsWithVisualFormat这两个类方法来创建视图并可以实现自动布局
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- Swift开发:NSLayoutConstraint纯代码实现自动布局-初级篇
要求 宽高200的view,通过代码,使得view在距离父控件的右下角20边距处 /* 约束的设置,控件内部约束由自己添加,比如宽高,如果是与其他的 控件约束那么有父控件添加 *创建约束 NSLayo ...
- AutoLayout自动布局,NSLayoutConstraint 视图约束使用
一.方法 NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:<#(id)#> attribut ...
- (翻译)开始iOS 7中自动布局教程(二)
这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...
随机推荐
- 模型事件注意点,before_delete、after_delete、before_write、after_write、before_update、after_update、before_insert、after_insert
模型类支持before_delete.after_delete.before_write.after_write.before_update.after_update.before_insert.af ...
- 实现网上大神的asp.net mvc + ef +easyui
大神开源博客: http://www.cnblogs.com/ymnets/p/3424309.html 系统更换UI:本人喜欢基于bootstrap的adminlteUI,所以后面会将UI更换为ad ...
- 我在B站学习 清华大学教授带你学习c++(进阶)构造函数
B站av11459203的一系列视频,跳过了基础篇直接进入进阶,从此难度开始加大.这里做出一些笔记分享一下. 我是1.25速度看的..对应分P 37-38 构造函数的作用 将对象初始化为一个特定的初始 ...
- 数据库的 2个参数 NLS_LENGTH_SEMANTICS 说明,comment 说明
############### sample 1: NLS_LENGTH_SEMANTICS 1.数据库字符集选择的是NLS_CHARACTERSET=UTF8,如果NLS_CHARACTERSET= ...
- python3 下载 以及 练习1 以及 pycharm 专业版 安装
下载python: https://www.python.org/downloads/release/python-365/ ########sample 1 下载pycharm 社区版本,但是web ...
- 030 Substring with Concatenation of All Words 与所有单词相关联的字串
给定一个字符串 s 和一些长度相同的单词 words,找出 s 与 words 中所有单词(words 每个单词只出现一次)串联一起(words中组成串联串的单词的顺序随意)的字符串匹配的所有起始索引 ...
- 022 Generate Parentheses 生成括号
给 n 对括号,写一个函数生成所有合适的括号组合.比如,给定 n = 3,一个结果为:[ "((()))", "(()())", "(())() ...
- cgkib动态代理详解-不依赖接口,速度快
1. cglib原理-不依赖接口,速度快 使用ASM字节框架动态生成要代理类的子类,子类重写final以外的方法,织入横切逻辑 2. 示例-实现MethodInterceptor Test.java ...
- 常见的SQL错误和解决方法
前言 今天你会看到每个人——从新手到专家——在使用SQL时犯的各种常见错误.你不能永远避免犯任何错误,但是熟悉广泛的错误将帮助你在尽可能短的时间内解决这些错误. 注:在我们的例子中我们使用的是Orac ...
- 工作经验(Unity篇)
我的工作是C++开发,主要是做底层,其中绝大部分是给Unity调用的,以下是我的脚印,希望不会重蹈覆辙 Unity具有强大的跨平台性,但是使用到库文件不尽相同,例如Android中就使用so库文件,W ...