文档章节

iOS简单自动布局autoresizing的组合情况研究

h
 hellofox2000
发布于 2015/10/21 18:46
字数 566
阅读 1846
收藏 4

autoresizing是UIView的属性,可以用来做一些简单的自动布局实现。网络文章介绍单属性的居多,对组合情况研究的较少。本文对组合情况进行了一些研究。

单属性的介绍如下

属性 描述
UIViewAutoresizingNone 不会随父视图的改变而改变 
UIViewAutoresizingFlexibleLeftMargin 自动调整view与父视图左边距,以保证右边距不变
UIViewAutoresizingFlexibleWidth 自动调整view的宽度,保证左边距和右边距不变 
UIViewAutoresizingFlexibleRightMargin 自动调整view与父视图右边距,以保证左边距不变 
UIViewAutoresizingFlexibleTopMargin 自动调整view与父视图上边距,以保证下边距不变
UIViewAutoresizingFlexibleHeight 自动调整view的高度,以保证上边距和下边距不变
UIViewAutoresizingFlexibleBottomMargin 动调整view与父视图的下边距,以保证上边距不变


组合情况:

组合 描述
UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth  

右边距不变,新的左边距=(新父视图的宽-右边距)*旧左边距/(旧父视图的宽 - 右边距) 

简单来说就是:右边距不变,左边距是按父视图去除右边距后的所占比例,成比例增长。

UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth

和上面的公式一样,左右互换即可

UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth

新的边距=新父视图的宽/旧父视图的宽*边距
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleHeight 底部边距不变,新的顶边距=(新父视图的高-底边距)*旧顶边距/(旧父视图的宽 - 顶边距) 
UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight 和上面的公式一样,顶底互换即可
UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight 新的边距=新父视图的高/旧父视图的高*边距


下面对组合的第一种情况进行详细演示下。如图:

黑色view的frame为:(10, 100, 200, 100),蓝色view的frame为:(50, 10, 100, 80). 

当把黑色view的宽增加100时,此时新的左边距=(300-50)*50/(200-50)=83.333333333333

当把黑色view的宽增加200时,此时新的左边距=(400-50)*50/(200-50)=116.66666666667.

通过log可以很清楚的看到。



© 著作权归作者所有

共有 人打赏支持
h
粉丝 2
博文 5
码字总数 4611
作品 0
海淀
私信 提问
iOS界面布局之一——使用autoresizing进行动态布局

iOS界面布局之一——使用autoresizing进行动态布局 autoresizing是iOS中传统的界面自动布局方式,通过它,当父视图frame变换时,子视图会自动的做出相应的调整。 一、通过代码进行布局 任何一...

珲少
2015/06/01
0
0
2018 一份"有点难"的iOS面试题(5年iOS开发)

序言: 之前一时兴致在本站上出过一份iOS的中级面试题,引起一些关注,不少同学表示对”隐藏关卡“感兴趣。升级版iOS面试题来了,目测难倒90%iOS程序员,目测一大波程序员撸着袖子在靠近。 ...

原来是泽镜啊
05/26
0
0
基于原生的移动跨平台研究和实践

基于原生主要是针对基于webview+h5比较来说的,基于H5的我不想再讨论了,我想尝试的是从UI到功能都是原生,而不是用H5模拟的所谓原生体验。 背景 我们从开发角度来考虑,但凡想从事长远的开发...

voxer
2017/03/26
109
0
iOS11 UITableView reloadData 界面跳动问题

在 iOS11.的系统上当 UITableView 设置高度固定 rowHeight = xxx; 时,如果tableView滚动到最底部,此时如果刷新tableView会出现tableView向上方跳动一段距离的现象 。 既然只是在iOS 11系统...

zh_iOS
09/03
0
0
BlackHat 2018 iOS越狱细节揭秘:危险的用户态只读内存

  议题概要   现代操作系统基本都已经在硬件级别(MMU)支持了用户态只读内存,只读内存映射在保证了跨进程间通信、用户态与内核间通信高效性的同时,也保证了其安全性。直到DirtyCOW漏洞...

FreeBuf
08/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

保护Hadoop集群三大方法

大约在两年前,开源数据库解决方案MongoDB以及Hadoop曾遭受过大量恶意攻击,这些攻击后被统称为“勒索软件”,因为其攻击者会擦除或加密数据,然后向被攻击者索要资金以恢复数据。自今年以来...

linuxCool
6分钟前
0
0
开源 java CMS - FreeCMS2.8会员我的留言

项目地址:http://www.freeteam.cn/ 我的留言 从左侧管理菜单点击我的留言进入。在这里可以查看当前登录会员的所有留言记录。 查看留言 点击留言标题可以查看留言详细内容。 删除留言 选择留...

freeteam
26分钟前
2
0
OSChina 周五乱弹 —— 这就是不要女朋友的理由

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @狄安娜的猫 :分享丁家鑫的单曲《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 手机党少年们想听歌,请...

小小编辑
57分钟前
599
16
CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
6
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部