文档章节

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

h
 hellofox2000
发布于 2015/10/21 18:46
字数 566
阅读 1838
收藏 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
海淀
2018 一份"有点难"的iOS面试题(5年iOS开发)

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

原来是泽镜啊
05/26
0
0
iOS界面布局之一——使用autoresizing进行动态布局

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

珲少
2015/06/01
0
0
BlackHat 2018 iOS越狱细节揭秘:危险的用户态只读内存

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

FreeBuf
08/09
0
0
iOS11 UITableView reloadData 界面跳动问题

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

zh_iOS
09/03
0
0
​如何在cocos2d-x 项目中增加全局变量

如何在cocos2d-x 项目中增加全局变量 最近在研究如何自动运行cocos2d-x的测试工程,需要在testCpp工程中加入一个自定义的全局指针,指向现在正在运行的测试例。这个全局指针应该放哪里好呢?...

暖冰
2015/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解决访问swaggerUI接口文档显示basic-error-controler问题

使用swagger生成接口文档后,访问http://localhost:8888/swagger-ui.html#/,显示如下: 解决方法: public Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2)......

张欢19933
7分钟前
0
0
区块链教程以太坊源码分析core-state-process源码分析(二)

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUin...

兄弟连区块链入门教程
12分钟前
0
0
BLAKE2 — fast secure hashing

BLAKE2 — fast secure hashing SPECS | CODE | B2SUM | CONTACT | USERS | THIRD-PARTY SOFTWARE | CRYPTANALYSIS | FAQ Come from http://www.blake2.net/ BLAKE2 is a cryptographic has......

openthings
18分钟前
0
0
Titan Framework MongoDB深入理解3

在前两篇文章中,我们介绍了操作Mongo数据库的类型Curd和Finder,下面要理解的是框架内mongoDB操作的条件类型——MongoDBQueryCondition。 MongoDBQueryCondition是一个接口,规定了一些实现...

云季科技
18分钟前
0
0
数据结构(算法)-树

#include <iostream>#include <malloc.h>using namespace std;#define MaxSize 100typedef char ElemType;typedef struct node{ElemType data;struct node *left ,*......

ashuo
20分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部