屏幕适配

来源:互联网 发布: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
原创粉丝点击