八卦爆料

2022年体育电竞赛事屏幕适配的那些坑

布景

比来正在做 iPhone4 战 iPhone6 及 iPhone6 plus 的适配任务。因为汗青缘由出有效 AutoLayout ,也因为汗青缘由老代码的规划满是用数字1个1个写逝世的。那便给适配带去了莫年夜的坚苦。比方上面那段代码:

UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 241, 320, 28)];

0这类数字借好道,241便完整让人摸没有着脑筋,至于320那个改成屏幕宽度倒也便借好,可是28这类奇异数字又是甚么呢。这类代码固然写起去轻易,可是保护坚苦,可读性极好,特别是有多个控件规划的时辰,依靠干系没有较着,若是调剂规划须要挨个从头计较并设置值,极易保护。

散年夜成者莫过于此:

CGRect rect = CGRectMake(12.2+(page⑴)*320+42.5*(i%7),((totalRows⑴)%3)*55+2,42.5,42.5);

屏幕适配的共享2022-07-20 早上看到那代码好面便抱着键盘哭了出去。

上面战年夜家聊1聊屏幕适配中须要注重的内争容。

年夜条件是:纯洁经由过程代码设置坐标战年夜小的规划计划(我感觉仍是 xib + autolayout 的组适合配起去更沉紧1面)。

公道设想

规划虽然说是个别力活,但同时也是个艺术活。之以是称之为设想,是由于一样的设想稿能够有良多种完成体例。UIKit 供给了良多现成可用的控件,若何充实操纵那些控件完成本身的规划成果便是1个须要思虑的进程了。

举个简略的例子,1个滑动挂断德律风的按钮,您能够经由过程 UIImageView 完成,增加按下的监听而后跟从脚指挪动,紧脚以后再动绘回到本天便可。您也能够用 UIScrollView 完成,设置 ContentSize 宽于屏幕,从而节制滑块规模。固然您也能够用 UISlider 完成,只要要设置滑块的图象便可。各有好坏,自止判定。

数据语义

若是我念让宽度为100的按钮位于屏幕3分之1处,我能够设置它的 x 值为 57 沉紧实现使命。如许固然简略,可是过段时候再返来保护代码的时辰会对如许的奇异数字没有知所措,若是要调剂规划更是寸步难行。我感觉比拟好的方式是把数据由去列出去,像如许:

float x = kScreenWidth / 3 – btnWidth / 2;

如许看起去便沉紧多了:屏幕的3分之1处再往左半个宽度,也便是 x 的值。

绝对规划

咱们经常碰到良多控件同时呈现的环境,比方3个从上往下顺次距离10像素的按钮,能够如许完成:

CGRect rect1 = CGRectMake(0,0,100,44);

CGRect rect2 = CGRectMake(0,54,100,44);

CGRect rect3 = CGRectMake(0,108,100,44);

可是若是咱们念把那3个按钮同时下移,那咱们便须要挨个设置1遍。比拟好的计划是经由过程绝对规划去完成。

CGRect rect1 = CGRectMake(0,0,100,44);

CGRect rect2 = CGRectMake(0,rect1.origin.y+rect1.size.height,100,44);

CGRect rect3 = CGRectMake(0,rect2.origin.y+rect2.size.height,100,44);

固然甚么场景利用绝对规划,针对哪些控件利用绝对规划,那些便是咱们须要设想的题目了。

条理干系

普通环境下,1个页里内争会呈现良多控件,若是皆经由过程 addSubview 增加到视图中很轻易紊乱。能够经由过程1些 UIView 做为容器帮助规划。小我感觉能够给控件们支配好深度,同个深度的控件再停止分组,有助于办理。

矫捷粗准

规划代码的矫捷性非常主要。比方两个战屏幕等宽的按钮,若是经由过程160设置宽度,此刻iPhone61出以后便纷纭中枪了。再比方那种 CollectionView 的单位格宽度下度写逝世了44.5的,最好是经由过程计较静态获得。固然有必然的计较量,可是正在前期若是碰到设想变革甚么的,只要要改个宏界说的 CELLS_PER_ROW 如许的值便可以完成新需要,非常便利。更主要的是,如许的代码常常是成心义的,一切的值战规划成果皆是能够语义化抒发的,如许会让全部代码新鲜起去,布满性命力。

Back To Top