作为一个iOS开放者,在iPhone6和iPhone6 plus发布之后,慢慢的都会遇到屏幕适配的问题。
在讨论适配之前,我们先来看看系统提供的放大模式。
放大模式下:屏幕尺寸仍然为320宽度,会根据设备,界面等比放大至其他屏幕宽度的尺寸,由于是放大,会导致界面有轻微的模糊,并且状态栏也会和平时不一样(明显变大了)。
那么适配模式下呢?不同尺寸设备的屏幕点像素是不一样的,如果要处理一个界面,并且要求iPhone6plus和iPhone5S是同一套设计稿,看起来一样比例。那么怎么破?
无论是使用传统布局,还是使用AutoLayout,都避不开的是界面的数值计算,比如同一个左边距,在iPhone5下是10px,但是等比换算到iPhone6plus的时候差不多就是13px了,莫非为了不同屏幕看起来比例一样,我们还要分开处理,用条件来判断并分别布局么?
当我开始这么想的时候,我是拒绝的,因为我们是爱加特效的开发者,怎么能连等比例计算都不会玩呢?
好了拿到iPhone5s屏幕尺寸640*1136的设计稿,什么?左边距是20px?
CGFloat leftPadding = 10*SCREEN_WIDTH/320.0;
LOOK! 我们已经有了一个可以在各个尺寸屏幕下按同一个设计稿等比例适应的左边距了! 恩恩,还有很多值,一个个来…
CGFloat rightPadding = 15*SCREEN_WIDTH/320.0;
CGFloat topPadding = 20*SCREEN_WIDTH/320.0;
.....
等等,这么算,貌似有很多重复的东西出现了: