最近在做 iPhone4 和 iPhone6 及 iPhone6 plus 的适配工作。由于历史缘由没有用 AutoLayout ,也由于历史缘由老代码的布局全是用数字1个1个写死的。这就给适配带来了莫大的困难。比以下面这段代码:
1
2
3
|
UILabel ... |
0这类数字还好说,241就完全让人摸不着头脑,至于320这个改成屏幕宽度倒也就还好,但是28这类奇异数字又是甚么呢。这类代码虽然写起来容易,但是保护困难,可读性极差,特别是有多个控件布局的时候,依赖关系不明显,如果调剂布局需要挨个重新计算并设置值,极难保护。
集大成者莫过于此:
1
|
CGRect |
今天早上看到这代码差点就抱着键盘哭了出来。
屏幕适配的分享
下面和大家聊1聊屏幕适配中需要注意的内容。
大条件是:纯洁通过代码设置坐标和大小的布局方案(我觉得还是 xib + autolayout 的组适合配起来更轻松1点)。
公道设计
布局虽然说是个体力活,但同时也是个艺术活。之所以称之为设计,是由于一样的设计稿可能有很多种实现方式。UIKit 提供了很多现成可用的控件,如何充分利用这些控件实现自己的布局结果就是1个需要思考的进程了。
举个简单的例子,1个滑动挂断电话的按钮,你可以通过 UIImageView 实现,添加按下的监听然后跟随手指移动,松手以后再动画回到原地便可。你也能够用 UIScrollView 实现,设置 ContentSize 宽于屏幕,从而控制滑块范围。固然你也能够用 UISlider 实现,只需要设置滑块的图象便可。各有优劣,自行判断。
数据语义
如果我想让宽度为100的按钮位于屏幕3分之1处,我可以设置它的 x 值为 57 轻松完成任务。这样虽然简单,但是过段时间再回来保护代码的时候会对这样的奇异数字手足无措,如果要调剂布局更是寸步难行。我觉得比较好的方法是把数据由来列出来,像这样:
1
|
float |
这样看起来就轻松多了:屏幕的3分之1处再往左半个宽度,也就是 x 的值。
相对布局
我们常常遇到很多控件同时出现的情况,比如3个从上往下顺次间隔10像素的按钮,可以这样实现:
1
2
3
|
CGRect CGRect CGRect |
但是如果我们想把这3个按钮同时下移,那我们就需要挨个设置1遍。比较好的方案是通过相对布局来实现。
1
2
3
|
CGRect CGRect CGRect |
固然甚么场景使用相对布局,针对哪些控件使用相对布局,这些就是我们需要设计的问题了。
层次关系
1般情况下,1个页面内会出现很多控件,如果都通过
灵活精准
布局代码的灵活性10分重要。比如两个和屏幕等宽的按钮,如果通过160设置宽度,现在iPhone61出以后就纷纭中枪了。再比如那种 CollectionView 的单元格宽度高度写死了44.5的,最好是通过计算动态获得。虽然有1定的计算量,但是在后期如果遇到设计变更甚么的,只需要改个宏定义的
下一篇 证券-专业术语