屏幕适配
来源:互联网 发布:1-10伪随机数生成算法 编辑:程序博客网 时间:2024/06/11 00:06
屏幕适配
1.目标
i4-320*480 ———– 计算Frame
iPad-768*1024 ——–Autoresizing — 让控件随父控件拉伸而拉伸 (不能同级别间控件)
i5-320*568 ————Autolayout —— 可以约束各个控件间位置(不能用于不同屏幕)
i6-375*667——————SizeClass—–根据不同设备不同约束(autoLayout).
i6s-414*736
2.步骤
- Autolayout约束参照是最近一个控件.
- Autoresizing和Autolayout不能同时使用.
- Autoresizing代码实现 –autoresizing属性枚举,基于坐标.
- Autolayout简单实用:
- 公式:first.item.top = second.boom * multiplier + constant;
- 现设屏幕边的约束,一个控件约束最多四个.
- 代码操作时,可以把约束拖尾NSLayoutConstraint类型属性.
- 利用Masonry框架.
一、固定一个控件的步骤:
1.先确定固定哪几个约束,一般一个控件最多4个约束。 2.设置约束,技巧:先确定需要固定的约束,再去修改值。为什么不能先修改值,因为如果以后先添加一个约束,会把值还原。 Autolayout经验: 1、如果一个控件出错,最好先把之前的约束全部 清空,然后再重新添加。 2、注意使用control方式参照另外一个view,只能添加约束,约束的值默认都是当前的值,如果当前的值不是我们想要的效果,只需要找到对应的约束修改值就好了。 3、如果需要布局很多子控件,先布局好父控件,在布局子控件。 4、一般情况下,都是先固定好一个控件,然后其他控件参照这个控件约束。 5、特殊情况:如果需求中各个子控件的间距一致,宽度需要自动计算,这时候需要把所有子控件拖进去,并且放在一条平行线上进行约束。
二、autolayout错误提示:
黄色警告:当前控件的Frame和约束的Frame不符合,怎么解决:更新frame,(cmd + option + =) 红色错误:1.丢失约束(控件的位置不能确定)2.约束冲突(控件的约束多,系统不知道跟随哪一个约束)
三、sizeClass笔记:
sizeClass作用:用于区别不同屏幕。 sizeClass的布局使用经验:如果使用了any,any的尺寸,约束控件,就不能在其他的尺寸下去,约束了,否则会报约束冲突,any,any一般不推荐使用,什么时候才使用,如果以后只需要关心一套屏幕适配约束的时候,就可以使用any,any.只要以后需要不同尺寸进行约束,就需要根据不同尺寸的进行屏幕适配。 sizeClass中添加子控件的经验,如果一个控件在任何屏幕下都需要显示,在any,any的尺寸下先拖进去,而不是先确定屏幕尺寸,再去拖控件,会容易造成一个Bug,控件在另外一种尺寸下消失。 images.xcassets里面也可以根据不同的尺寸,设置不同的图片 *:any -:compant +:regular
四、autoresizing和autolayout区别和使用注意
只要我们项目中使用autoresizing,必须把autolayout,两个不能同时支持 autoresizing:依赖于frame autoresizing:只能用于子控件和父控件产生联系 autolayout:用于各个控件之间产生联系 autolayout:不依赖与frame 以后枚举中如果有移位运算符<<,>>,就可以用并|,表示同时支持多个枚举 UIViewAutoresizingNone = 0, 不拉伸 UIViewAutoresizingFlexibleLeftMargin = 1 << 0, =》左边间距需要随着父控件拉伸而拉伸 UIViewAutoresizingFlexibleWidth = 1 << 1, =》宽度需要随着父控件拉伸而拉伸 UIViewAutoresizingFlexibleRightMargin = 1 << 2, =》右边间距需要随着父控件拉伸而拉伸 UIViewAutoresizingFlexibleTopMargin = 1 << 3, =》顶部间距需要随着父控件拉伸而拉伸 UIViewAutoresizingFlexibleHeight = 1 << 4, =》高度间距需要随着父控件拉伸而拉伸 UIViewAutoresizingFlexibleBottomMargin = 1 << 5 =》底部间距需要随着父控件拉伸而拉伸
五、autolayout公式:firstItem.top = second.bottom * multiplier + Constant
multiplier:乘积
七、storyboard中专业名称解释
按照control键参照另外一个控件的专业术语解释: Horizontal Space:水平间距 Vertical Space:垂直间距 Centen Y:中心点Y值一致,用来固定控件垂直 Centen X:中心点X值一致,用来固定控件水平位置 TOP:顶部一致 Bottom:底部一致 Equals Widths:宽度相等 Equals Heights:高度相等 如何让一个控件是另外控件宽度一半:先让两个控件的宽度产生关系,然后再修改值。 red.width = blue.width * 0.5 + 0
八、Autolayout代码实现
一、如何判断约束添加到哪个view,如果约束中参考了其他view,就添加到父控件上,如果只参照自己(宽,高),都是添加到自身控件上。
0 0
- 【Android 屏幕适配】 屏幕适配
- Android 屏幕适配--屏幕旋转
- COCOS2DX屏幕显示与屏幕适配
- Android屏幕适配-----屏幕尺寸
- Android屏幕尺寸单位/屏幕适配
- 屏幕适配
- 【Android】屏幕适配
- android屏幕适配
- android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- android 屏幕适配
- 屏幕适配
- Android屏幕适配
- Android屏幕适配
- mysql优化(1)show命令 慢查询日志 explain profiling
- Maven3.3.3安装部署教程
- Android 5.1 Lollipop的Zygote分析——下篇
- ZOO
- mysql优化(2)索引优化 配置优化
- 屏幕适配
- cocos2dx-js3.9 手动绑定JS到C++
- 【hdu1241】Oil Deposits——dfs/bfs
- POJ2782(贪心)
- 如何建立自身的自信
- 在javascript中innerHTML和innerText的区别,以及innerHTML和innerText在各个版本浏览器的兼容性问题
- STL 中的容器们(四)
- 互联网时代的股权激励
- mysql 多个TimeStamp设置