在YY狼人杀项目中,设计提出一项界面优化,由于iPhone5s的屏幕比较小,iPhone Plus款又太大,会使得游戏界面变得太狭窄或留白过多。设计要求等比适配。因为5S屏幕和6和Plus的屏幕宽高比都是相同的(只差一两个像素)。只需要照iPhone6做一次布局然后所有东西都等比缩放就好了。
而iOS事实上本身并没有等比布局方案,用代码或者autolayout间距都是固定的,全部用代码计算就太麻烦。而且字体也无法缩放,最后的解决方案是使用UIView的transform特性来布局。
- 在需要等比缩放布局的页面创建一个UIView,写死为iphone6的宽高。
- 在该UIView将所有的控件都按照设计图布局好。
- 使用transform的缩放方法拿到当前屏幕宽高按照比例将UIView缩放并加到controller的view上。布局就完成了。
由于使用transform,点击事件和UI也都不会错乱,也会自动适配。完美解决等比适配的问题。