从接触ios开始,我就是忠实的可视化开发的搬运工——俗称UI拖拽师!
本编主要送给那些年热爱xib,喜欢效率的ios程序猿们。它可能解决你多年的心病!一直挥散不去的禁锢于代码的约束,一群技术大牛此时应该会鄙视,但我乐此不疲。
正题开始:此篇文章的主要内容是利用运行时和xib的机制,用少许的代码适配所有机型。简单粗暴而不失优雅!用了我这套方法你只要在375的xib里面随心所欲的约束,然后就可以适配刘海屏,plus屏,se屏等等。
-
首先我要引入一个关键字IBDesignable(此处应该有些掌声)
这个神奇的关键字IBDesignable的效果就是给xib的右边栏加一个属性列表,然后你可以通过属性列表将其赋值以达到针对不同机型来适配屏幕。
image.png -
上图清晰的说明操作
1.建一个NSLayoutConstraint类别,给他加属性。
请注意给类别加属性需要用到运行时来实现。原理不就细说了,自己找度娘。继续上图
image.png
注意宏的定义是这个方法的关键,通过当前屏幕的尺寸和375的尺寸做对比。
image.png
做完这个功夫后,就差最后一步达到效果就是去开启这个效果!
image.png image.png
选中一个纵向的约束 然后对应的去打开,由于我的命名太长被...代替了,他的顺序是和h文件命名的顺序一样,第一个是W横向的,第二个是H纵向的。所以我们打开纵向的。IBDesignable的关键词就起了作用,属性添加的是Bool值所有选的时候会出现ON和OFF。
通过这个操作,就可以随意操作xib了。然后布局完成后对应把所有的纵向和横向的依次设置一下开关,他就会随着屏幕的尺寸而放大和缩小。
-
很多朋友又要说:你这个值适配了约束,字体又不会变。那这个又怎么实现呢。来吧。第二步来了,干字体。
字体怎么加呢。其实也很简单!用运行时,根据xib的加载机制。在他加载的某个阶段把当下的字体取出来,然后根据相应的机型去设置字体大小就行了。来来来上图
image.png
建立一个uilabel的类别,h文件不用动。m文件如图所示。
通过load方法加载的时候,讲initWithCoder:方法的实现和自定义的adapterInitWithCoder:的实现交换。这样xib加载到initWithCoder:的时候就会实现自定义的那个方法。取出当前的字体大小,plus屏幕字体就+1(举例说明可以微调加0.5),se屏幕字体就-2。是不是很简单。那你说怎么调用呢,其实你既然创建了这个类别就会走这个方法,在xib中已经实现了。是不是很神奇!至于其他空间只要有字体的,都可以用这种方法去实现,这就不一一举例了。我平时直接拉进项目如图所示
image.png
有了以上两个方法,就实现了约束的比例缩放以及字体大小的缩放。xib在375的标准下狂奔吧!ios的开发者们,run!有什么好的建议可以留言哦,欢迎ios的朋友们相互学习。需要Demo记得留下邮箱,我给你发Demo。
网友评论