ios 之 autoresizing小解
对于IOS的app开发人员来说,不会像Android开发人员一样为非常多的屏幕尺寸来做界面适配,因此硬编码的坐标也能工作良好,可是从设计模式上来说这不是好的做法。
并且也另一些问题,如iPhone5的适配,横竖屏的切换等。也许你能够做两套UI方案来做适配,可是这样添加反复工作量。并且不够高端,万一有出新的屏幕大小了呢。哲理就将介绍IOS中的两大自己主动布局利器:Autoresizing
和 Autolayout
。
autoresizing是UIView的属性。一直都有,使用简单,可是没有autolayout强大。autolayout是IOS6以后的新技术,更加强大。本文主要介绍Autoresizing
的特性和使用方法。
1. Autoresizing特性
autoresizingMask
是一个枚举类型, 默认是UIViewAutoresizingNone
, 也就是不会autoresize:
|
|
这个枚举类型,使用了 1 << n
这种写法来定义。代表了它能够复选。假设你不明确为什么。能够复习下“位运算”。 那么这些值分别代表什么意思呢?
事实上怎样理解这几个值非常easy,那就是从xib里面看。 我们在一个xib文件里,取消勾选autolayout
,(默认使用autolayout时。autoresizing看不到)。那么我们能够在布局那一栏看到怎样设置autoresizing
.
上图说明了在xib中设置的这些线条和实际属性相应的关系。这当中须要注意的是,当中4个margin虚线才代表设置了该值,而width和height是实线代表设置了该值,不能想当然的理解。
这些项分别代表:
autoresizingMask是子视图的左、右、上、下边距以及宽度和高度相对于父视图按比例变化。比如:
UIViewAutoresizingNone 不自己主动调整。
UIViewAutoresizingFlexibleLeftMargin 自己主动按比例调整与superView左边的距离,且与superView右边的距离不变。
UIViewAutoresizingFlexibleRightMargin 自己主动按比例调整与superView的右边距离,且与superView左边的距离不变。
UIViewAutoresizingFlexibleTopMargin 自己主动按比例调整与superView的顶部距离,且与superView底部的距离不变。
UIViewAutoresizingFlexibleBottomMargin 自己主动按比例调整与superView的底部距离,且与superView顶部的距离不变。
UIViewAutoresizingFlexibleWidth 自己主动按比例调整宽度。
UIViewAutoresizingFlexibleHeight 自己主动按比例调整高度。
UILabel* label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, 200, 40)];
[label setAutoresizingMask: UIViewAutoresizingNone]; 控件相对于父视图坐标值不变
以上这些都较易理解, 可是autoresizing
另一些组合场景。那就是组合使用的场景。
autoresizingMask | 说明 | xib预览效果 |
---|---|---|
None | view的frame不会随superview的改变而改变(右图的xib中预览效果与实际效果有差,实际效果是view的上边距不变) | |
TopMargin | BottomMargin | view与其superView的上边距和下边距的比例维持不变 | |
LeftMargin | RightMargin | view与其superView的左边距和右边距的比例维持不变(右图的xib中预览效果与实际效果有差,实际效果是view的上边距不变) | |
LeftMargin | RightMargin | TopMargin | BottomMargin | view与其superView的上下左右边距的比例维持不变 | |
LeftMargin | Width | view与其superView的右边距的比例维持不变, 左边距和width按比例调整(右图的xib中预览效果与实际效果有差。实际效果是view的上边距不变) | |
LeftMargin | Width | RightMargin | 左边距、右边距、宽按比例调整。(右图的xib中预览效果与实际效果有差。实际效果是view的上边距不变)垂直方向是相同效果。故不列举 | |
Width | Height | 自己主动调整view的宽和高,保证上下左右边距不变。如把tableView设置为此属性,那么不管viewController的view是多大,都能自己主动铺满 |
上面并未列举全部组合场景,可是已经足够我们理解 autoresizing
了。
2. 小结
转载于:https://www.cnblogs.com/yfceshi/p/7240928.html
ios 之 autoresizing小解相关推荐
- iOS UI-自动布局(Autoresizing)
1 // 2 // ViewController.m 3 // IOS_0115_buzhi 4 // 5 // Created by ma c on 16/1/15. 6 // Copyright ...
- ios老版本通过autoresizing简单适配iphone5
今天打开已经上线的APP源码,发现Xcode检测出几个错误,简单修改一下就ok了. 有一个类库值得说一下:libxml2.2.7.3.dylib 这个库文件已经没有了,我们需要在项目的build Ph ...
- autolayout autoresizing
WWDC 2012 Session笔记--202, 228, 232 AutoLayout(自动布局)入门 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里.如果您是首次来到本站 ...
- iOS - iOS 适配
前言 什么是适配: 适应.兼容各种不同的情况. iOS 开发中,适配的常见种类: 1)系统适配, 针对不同版本的操作系统进行适配. 2)屏幕适配,针对不同大小的屏幕尺寸进行适配. iPhone 的尺寸 ...
- iOS布局-autoresizingMask
iOS布局-AutoresizingMask 前端的主要任务简单来看,就是绘制界面,绑定数据.在iOS绘制界面的布局方式主要有以下三种: frame autoresizingMask AutoLayo ...
- ios开发之UIView和UIViewController
UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...
- iOS开发:iPhone6、6 plus适配
本文转载至 http://jingyan.baidu.com/article/8cdccae97a5c2b315413cda9.html 1 2 3 4 5 6 7 分步阅读 随着苹果公司持续推出新产 ...
- 如何让一套代码适配所有iOS设备尺寸?
简介:随着移动互联网设备和技术的发展,各种移动设备屏幕尺寸层出不穷,折叠屏.分屏.悬浮窗等等,面对越来越多样的屏幕,如果为每种尺寸单独进行适配,不仅费时费力,还会增加端侧代码的开发与维护压力.如何让一 ...
- iOS中AutoLayer自动布局流程及相关方法
关于UIView的Layer,IOS提供了三个方法: 1.layoutSubviews 系统重写布局:在iOS5.1和之前的版本,此方法的缺省实现不会做任何事情(实现为空),iOS5.1之后(iOS6 ...
最新文章
- 比ewsa更快的跑包工具_重庆单肩包订购,编织布袋定做厂家
- Mac OS X 常用快捷键一览
- UVa11809 - Floating-Point Numbers
- 文本分类实战技巧(tricks)汇总
- python pyd_python解析.pyd文件
- putty连接TPYBord V202开发板教程
- webpack 了解
- 下拉选择框 其他_WPS表格下拉菜单的多种做法(一)
- 安装历史版本nvidia显卡驱动
- 如何开通微信小程序在线客服系统?
- Android 自定义锁屏_开发自定义ROM提速:红米Note 6 Pro等Android Pie内核源代码上线...
- win10怎么隐藏桌面计算机,Win10隐藏秘技大公开
- Unity实现瞄准镜效果
- 【老王读Spring AOP-3】Spring AOP 执行 Pointcut 对应的 Advice 的过程
- 集成测试和单元测试覆盖率合并
- Vue怎么操作父元素、兄弟元素、子元素
- R语言检验独立性:卡方检验(Chi-square test)和费舍尔精确检验分析案例报告
- matlab中linspace的用法,matlab中的一些基本使用方法(持续添加)
- UE4 跑酷游戏-得分机制
- 防洪决策指挥系统(Axure高保真原型)
热门文章
- java 安卓界面 可视化_Monkey可视化工具开发(android篇)
- 用iframe transform: scale() 缩小后点不到按钮_“打分”或者“打多少分”用英文可以怎样去表达?...
- 五天学习MySQL 数据库教程(一)1.2SQL介绍
- 传热学环肋肋效率matlab程序,传热学 第二章第四节 通过肋片的导热.pdf
- php unset 多可以什么_php unset()销毁单个或多个变量
- python lua 性能比较 内存_Lua 的速度为什么比 Python 快?
- 软件测试师具备的素质_软件测试工程师有哪些需要具备的能力呢
- php oracle 源码_PHP3中使用ORACLE函数的使用说明
- laravel increment出现了翻倍递增_中国股市:如何判断“强庄股”的出现,看懂主力心甘情愿送钱上门...
- c语言中赋予从2开始的偶数,2013年计算机二级C语言上机试题三十二及答案