Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二)
在上一篇文章iOS学习笔记02——以编码的方式实现Auto Layout自动布局(一)中我们简单的介绍了使用Visual Format Language创建布局约束来实现自动布局,这种方法创建的布局约束能够满足大部分的布局的需求。但是想要实现类似于这样的约束:button.width = 2 * button.height就不能满足要求了,这一篇我们我们简单介绍一下如何创建这样的布局约束。
Apple就是非常贴心,它为我们提供了另外一个方法创建类似于view1.attr1 = view2.attr2 * multiplier + constant这样的约束,方法如下:
- +(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;
下面我们用这种方法创建一个布局约束,实现一个按钮button的布局,button距离父视图的左侧60点,距离顶部30点,其中宽度W = 2 * H + 10。效果图如下
不多说,上代码
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- self.edgesForExtendedLayout = UIRectEdgeNone;
- UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
- button.layer.borderColor = [UIColor blackColor].CGColor;
- button.layer.borderWidth = 2.0;
- [button setTitle:@"W=2*H" forState:UIControlStateNormal];
- [self.view addSubview:button];
- [button setTranslatesAutoresizingMaskIntoConstraints:NO];
- NSMutableArray * tempConstraints = [NSMutableArray array];
- [tempConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-60-[button]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
- [tempConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-30-[button(==30)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(button)]];
- [self.view addConstraints:tempConstraints];
- [self.view addConstraint:[NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:button attribute:NSLayoutAttributeHeight multiplier:2.0 constant:10.0]];
- }
- http://blog.csdn.net/dongbaojun_ios/article/details/12624393
Auto Layout简单应用——以编码的方式实现Auto Layout自动布局(二)的更多相关文章
- Base64的编码转换方式
		下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上 ... 
- 详细介绍Base64的编码转换方式
		下面,详细介绍Base64的编码转换方式. 所谓Base64,就是说选出64个字符----小写字母a-z.大写字母A-Z.数字0-9.符号"+"."/"(再加上 ... 
- 简单去除exe自校验方式
		简单去除exe自校验方式 一. 自校验定义: 这些程序会检查自己有没有被修改,如果发现被修改的话,便会离开或进行其它动作.基本的校检方法包括 checksum, 检查大小, 检查跳转代码,等 ... 
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二)——通讯框架讲解
		首先感谢张队@geffzhang公众号转发了上一篇文章,希望广大.neter多多推广dapr,让云原生更快更好的在.net这片土地上落地生根. 目录:一.通过Dapr实现一个简单的基于.net的微服务 ... 
- 通过Dapr实现一个简单的基于.net的微服务电商系统(二十)——Saga框架实现思路分享
		今天这篇博文的主要目的是分享一下我设计Saga的实现思路来抛砖引玉,其实Saga本身非常的类似于一个简单的工作流体系,相比工作流不一样的部分在于它没有工作流的复杂逻辑处理机制(比如会签),没有条件分支 ... 
- 简单设置eworkflow条件的方式
		在eworkflow自定义工作流产品中,设置条件节点,是在节点的后续连线上设置的.每一个处理节点(除结束节点外)都至少有一条连线连接到下一个节点,当有多条连线连接到其他节点的时候,就需要在多出的连线上 ... 
- 【Auto Layout】Xcode6及以上版本,创建Auto Layout 约束时产生的一些变化【iOS开发教程】
		[#Auto Layout#]Xcode6创建Auto Layout 约束时产生的一些变化 通过两个小Demo来展示下变化: Demo1需求: 为控制器的根视图(图中的“控制器View”)的子 ... 
- 如何设置EditPlus的默认编码utf-8方式
		最近在使用英文版的Editplus写代码的时候,发现中文字符在调试过程中都变成了乱码,发现是Editplus编码设置的问题,Editplus默认编码可能是ANSI,需要将其改成UTF-8.干脆给设置默 ... 
- Eclipse中设置编码的方式
		如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工 作空间(workspace)的缺省字符编码是操作系统缺省的编码, ... 
随机推荐
- nginx ip无法访问
			CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤. 1.关闭firewall: systemctl stop firewalld.service #停止f ... 
- MPU6050工作原理及STM32控制MPU6050
			源:MPU6050工作原理及STM32控制MPU6050 MPU6050 介绍 
- Linux内核参数之rp_filter
			一.rp_filter参数介绍 rp_filter参数用于控制系统是否开启对数据包源地址的校验. 首先看一下Linux内核文档documentation/networking/ip-sysctl.tx ... 
- jenkins添加GIT repository报错
			添加了ssh互信,但一直提示如下错误. Failed to connect to repository : Command "git ls-remote -h git@git.xxx.cn: ... 
- 【传感器】BMA253 数字,三轴加速度传感器
			参考文档:BMA253E DataSheet 参考文档链接 密码:9new BMA253 数字,三轴加速度传感器 关键特性: 关键特性 封装方式 LGA封装(12pins),长*宽(2mm*2mm ... 
- gradle-rn-app工程运行须知
			singwhatiwanna edited this page 16 days ago · 5 revisions Pages 7 Home Demo 工程运行须知 VirtualAPK API 概 ... 
- Android 在 SElinux下 如何获得对一个内核节点的访问权限【转】
			本文转载自:https://blog.csdn.net/wh_19910525/article/details/45170755 Android 5.0下,因为采取了SEAndroid/SElinux ... 
- [BZOJ2342]双倍回文
			对每个大中心暴力找小中心即可. 代码: #include<iostream> #include<cstdio> #include<cstring> #define ... 
- LeetCode——Maximum Depth of Binary Tree
			LeetCode--Maximum Depth of Binary Tree Question Given a binary tree, find its maximum depth. The max ... 
- 一位交易巨匠的十年心得:如何使用MACD判断后期趋势,把握买卖点
			高手与散户的区别在哪里? 高手与散户的区别在哪里,从宏观上讲:一流高手用境界,二流高手用趋势,三流高手用技术,普通散户用迷糊.最高境界的人在讲心境如何,什么也不看,只用感觉就能炒好股赚钱.我说一流高手 ... 
