iOS布局-autoresizingMask
iOS布局-AutoresizingMask
前端的主要任务简单来看,就是绘制界面,绑定数据。在iOS绘制界面的布局方式主要有以下三种:
- frame
- autoresizingMask
- AutoLayout
fame:常用于绝对布局,通过设置x, y, width, height来确定控件的位置和大小。
autoresingMask:苹果早期的相对布局的方案,允许子视图跟随父视图变化而变化,比如按比例缩放宽高,按比例缩放边距,仅限于两个视图之间使用,需要fame配合使用[不建议代码使用,可以在xib中使用]。
AutoLayout:iOS6引入基于关系的相对布局方式,允许视图与另外一个或者多个视图保持约束关系,可以在多个视图间使用,但是建议参考父视图添加约束,系统可以自动将frame转为约束。
Waring: 同一个视图,不能同时使用autoresizingMask和AutoLayou,比如视图A不能左边关系使用autoresizingMask,高宽布局使用AutoLayout。但是允许同一父视图,不同子视图使用autoresizingMask或者AutoLayout
AutoresizingMask理解
与frame绝对布局不同,autoresizingMask允许子视图的大小和位置跟随父视图动态变化,比如像UIButtion内部哪些子控件就使用autoresizingMask来布局达到适应效果。
借助xib我们可以形象理解autoresizingMask。
设置子视图与父视图宽高等比例变化效果图如下:
设置等比例高度变化,底边距等比例间距,效果如下
通过上面的 gif 我们能轻松理解autoresizingMask的布局特点。就是可以设置等比例变化,达到视图自适应变化。
autoresizingMask支持 xib 和代码。
UIViewAutoresizing枚举值
在autoresizingMask中,通过控制UIView的autoresizingMask
属性控制,包含以下枚举值:
布局关系 | 视图随父视图等比例变化 |
---|---|
none | 默认值,不会随父视图改变而改变 |
flexiableLeftMargin | 子视图左边距,等比例变化 |
flexiableWidth | 子视图宽度,等比例变化 |
flexiableRightMargin | 子视图右边距,等比例变化 |
flexiableTopMargin | 子视图上边距,等比例变化 |
flexiableHeight | 子视图高度,等比例变化 |
flexiableBottomMargin | 子视图底边距离,等比例变化 |
Tips: flexiable表示灵活的、可自适应的、弹性的意思
实际设置往往需要组合这几个枚举值达到要求。
注意:在xib的Size Inspector的autoresizing中也可以设置对应关系(而且很简单),但是表达方式可能不一样,对于边距,在xib中选中表示不变的边距 , 对于宽高,选中表示等比例变化的。如下图
代码枚举值却是:[.flexibleTopMargin, .flexibleRightMargin]
xib/StroryBoard使用autoresizingMask
通过xib设置autoresizingMask很简单,也很直观,当你选择完后,鼠标放在上面就会有动效,可以观察到是不是自己想要的效果。
比如实现这个需求:label在不同尺寸的屏幕上,自适应变化宽高,等比例设置左右边距,但是顶部边距不变,达到不同设备相似视觉感。
首先在storyboard中,以SE屏幕Controller为参考设置想要的frame,设置automask,如下图:
实际运行显示,根据不同屏幕,label的左右边距等比例缩放,且自适应宽高。效果图如下
代码布局使用autoresizingMaskt
关于在代码中使用autoresizingMask,我是百思不得其解,感觉设置了也没有起到效果,感觉就像设置了还要自己算frame,不像在xib中设置了来得实际。
参考:自动布局值autoresizingMask使用详情
不建议使用,感觉理解起来很复杂。
iOS布局-autoresizingMask相关推荐
- ios的AutoresizingMask
在iOS应用的开发过程中,经常会使用,setFrame的方式对UIView进行布局, 经常会使用计算的方式,如self.view.bounds.size.height - 20-44- Heignt等 ...
- web端ios布局fixed元素软键盘唤起时fixed失效
在ios上做了一个简单的页面头部置顶底部置顶源码如下: <!DOCTYPE html> <html lang="en"> <head><m ...
- iOS开发 autoResizingMask使用
autoResizingMask 是UIView的一个属性,在一些简单的布局中,使用autoResizingMask,可以实现子控件相对于父控件的自动布局. autoResizingMask 是UIV ...
- ios布局 分为左右两块_安卓手机一年后卡顿,原因是安卓系统太开放了,改走iOS封闭之路...
全球手机市场分为两大阵营,一个是安卓,一个是苹果.具体的说应该是安卓系统和苹果的iOS系统,不过我们国产手机大多数是使用的安卓系统,各家手机品牌的系统都是基于安卓架构优化布局而形成,然而苹果的iOS系 ...
- ios布局 分为左右两块_iOS 13 隐秘的细节④:系统组件·下
新出的IOS13系统应该让非常多的设计师非常头疼,对比之前的系统存在哪些改变,设计师应该如何调整?本文从IOS13系统的隐秘细节出发,讲解了该系统的不一样,更好的帮助设计师快速了解新系统的调整,从而更 ...
- ios布局 分为左右两块_iOS 9之分屏多任务(Split View)
代码示例:https://github.com/CocoonJin/SplitView 多任务(multitasking)算是iOS9中最引人瞩目的核心新特性了,之前越狱版用户就用过类似的插件,微软的 ...
- CHCR让iOS布局更婀娜
传统方式布局的弊端 两个label同一行布局的时候,传统做法是将其中的一个label的宽度固定:另外一个label设置左右约束,让它跟随屏幕宽度拉伸压缩.如下的例子,我给商品数量Label加了一个60 ...
- iOS 布局 Masonry详解
现在iPhone手机屏幕越来越多, 屏幕适配也越来越重要. Masonry就是为屏幕适配而生的三方框架. Masonry基础API mas_makeConstraints() 添加约束 mas_rem ...
- android storyboard,iOS中xib与storyboard原理,与Android界面布局的异同
用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML能够理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中基本的布置界面的方式有3种:代码.x ...
最新文章
- 对称加密与非对称加密
- svn 怎么直接同步指定服务器的某个文件夹
- php学习---环境搭建安装 编译器的安装
- 购房占比47.54%,数据揭秘女性偏爱婚前买房背后原因
- Stanford NLP
- 买房为什么要少出首付,多贷款?
- 强烈推荐 MicroSoft Office OneNote
- txt形式进行传输WebShell图文演示!
- 快速上手Linux核心命令(一):核心命令简介
- java 一切object_javaObject类
- 小米MIX4不会采用四曲面屏:结果未必是坏事
- lede旁路由作用_高频旁路电容器作用及工作原理
- 罗永浩回应被中消协点名;传前淘宝直播运营负责人因贪污被阿里通报;TypeScript 4.0 Beta发布​ | 极客头条...
- Hive 复杂数据类型之map
- 【GNN】R-GCN:GCN 在知识图谱中的应用
- 如何直接删除mysql中的重复数据_如何删除mysql数据库中重复的数据(部分重复)?...
- 时间格式 asp.net
- 正则表达式 10. 分组可选
- 算法:找出存在子字符串的最先位置28. Implement strStr()
- Vue实现动态路由导航
热门文章
- 编程猫python讲师面试_【编程猫教师面试】在BOSS问了我很多,问我为什么选择编程猫,问我了解编程猫吗?-看准网...
- js之操作JSON数据
- PostgreSQL client's startup packet different between logical and normal stream replication
- JNDI数据库连接池的配置
- [iOS] 在UIToolBar中增加UILabel等控件(xib/storyboard图形界面方式)
- 看麦田“蚂蚁网” 想网络新社区
- sql输出表中重复数据
- Idea 2018.2.5创建springboot项目依赖包没有的错误
- Java范例集锦(一)
- Android 学习历程摘要(一)