iOS Xib/Storyboard 中,字号适配

本文Demo环境:Xcode 7.2.1 


随着苹果设备尺寸越来越多,使用Xib、Storyboard + Autolayout 进行页面布局,已是大势所趋;但是,在实际应用中,发现字号适配,比较繁琐;由于5s 和 6 的PPI 一致,所以,一般美工要求在 5s 和 6 上,字号一样,在 6 Plus 上,字号要增大两号;但是由于苹果提供的布局方式中:Auto Layout 、Size Class 都无法准确区分出竖屏6Plus;所以,字号适配,遇到瓶颈;


解决方案,个人总结,共三种:

一 : Xib 、Storyboard 中的每个需要字号适配的元素都连线到实现文件中,即创建  IBOutlet 对象,然后在代码中,通过判断设备类型,通过代码,设置具体字号。此方式比较常见,但适配工作量较大;

二:分别创建UILabel、UIButton、UITextField 的子类(这里我们假设Xib 中需要适配字号的都是这三种类型),然后添加6Plus 字号属性,并添加 IBInspectable 关键字,这样,就可以直接在Xib/Storyboard 中设置其对应字号大小了。此方式避免了上一种方式中“需要一一创建IBIOutlet对象”,但是在Xib中设置起来,工作量,依旧不小;

AdapterLabel.h
AdapterLabel.m
Xib中,直接设置6Plus字号大小

三:利用runtime,自定义initWithCoder方法,在自定义方法里,判断设备,设置字号;然后用自定义方法,替换系统默认实现方法;此方式,简单方便,工作量几乎为0,不用单独修改Xib、Storyboard中任何设置,也不用单独创建任何子类(变为创建Category了,😄);但是,缺点也显而易见,无法具体到某个页面、某个控件,进行单独的字号设置;

UILabel+Adapter.h
UILabel+Adapter.m

对于这三种实现方式,当然仁者见仁智者见智了,大家有什么好的做法,欢迎留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.尺寸适配1.原因 iOS7中所有导航栏都为半透明,导航栏(height=44)和状态栏(height=20)不...
    LZM轮回阅读 6,143评论 1 4
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,245评论 4 61
  • 你年纪大了 每走一步 都气喘吁吁 沉重的身躯 再不像过去那样 逆风一样驰骋 想念你的当年 默默无闻任劳任怨 生活的...
    树农阅读 261评论 4 4
  • 热点是个好东西。它可以让所有借着这股东风的人,顺利的达到自己想要达到的效果。即便个中有所曲折,相对于不蹭热点而言。...
    東門聖手阅读 8,882评论 2 7