背景:有时候我们需要在不同尺寸的屏幕上适配不同大小的字体

思路:不同尺寸屏幕不同字体大小通过【等比例缩放 or 加减】来实现

实现方法:

(1)方式1:宏定义

(2)方式2:runtime方法替换

注意:以下方法只能适配代码写的字体大小,对于xib设置的字体大小,后续补充


方案1: 宏定义(屏幕宽度做加减)

//宏定义
#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)
#define FONT_SIZE(size) ([UIFont systemFontOfSize:FontSize(size)])
//字体适配 在PCH文件定义了一个方法
static inline CGFloat FontSize(CGFloat fontSize) {if (SCREEN_WIDTH == 320) {return fontSize - 1;} else if (SCREEN_WIDTH == 375) {return fontSize;} else {return fontSize + 1;}
}  

方案2: 宏定义(屏幕宽度做比例)

#define SizeScale           (SCREEN_WIDTH/375.0)
#define kFont(value)        [UIFont systemFontOfSize:value*SizeScale]

方案3:runtime(方法交换)

首先需要创建一个UIFont的分类UIFont+runtime。

#import "UIFont+runtime.h"
#import <objc/runtime.h>#define MyUIScreen  375 // UI设计原型图的手机尺寸宽度(6), 6p的--414@implementation UIFont (runtime)
+ (void)load {// 获取替换后的类方法Method newMethod = class_getClassMethod([self class], @selector(adjustFont:));// 获取替换前的类方法Method method = class_getClassMethod([self class], @selector(systemFontOfSize:));// 然后交换类方法,交换两个方法的IMP指针,(IMP代表了方法的具体的实现)method_exchangeImplementations(newMethod, method);
}
+ (UIFont *)adjustFont:(CGFloat)fontSize {UIFont *newFont = nil;newFont = [UIFont adjustFont:fontSize * [UIScreen mainScreen].bounds.size.width/MyUIScreen];return newFont;
}
@end

然后外部正常调用systemFontOfSize方法即可:

//外部正常调用系统设置字体方法即可
UILabel*l1=[[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 40)];
l1.text=@"你好哇,你好哇";
l1.font= [UIFont systemFontOfSize:10];
[self.view addSubview:l1];

iOS字体适配方法总结相关推荐

  1. iOS 字体适配的几种方法总结

    在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏定义 ...

  2. iOS 字体适配(转)

    微信字体尺寸适配: https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207113485&idx=1&sn=c4961 ...

  3. vue-vant项目字体以及组件字体适配

    1. 页面中字体适配的方法: 新建一个rem.js文件: const baseSize = 32 function setRem () {const scale = document.document ...

  4. iOS字体大小适配的几种方法

    摘要:在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏 ...

  5. iOS字体大小适配机型的几种方法

    在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏定义 ...

  6. ios 字体 机打动效_24种打动朋友的方法

    ios 字体 机打动效 In the run up to Christmas, learn a new web development tip every day at 24 ways - by Ch ...

  7. html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)

    原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...

  8. iOS 9 适配中出现的坑

    整理 iOS 9 适配中出现的坑(图文) 2015-10-22 iOS开发 库克表示:"现在在中国有150多万的开发者在iOS当中开发应用程序,我们鼓励更多的人开发应用程序,也鼓励更多的创业 ...

  9. iOS 屏幕适配浅谈

    作者 | 钱凯 杏仁移动开发工程师,前嵌入式工程师,关注大前端技术新潮流. 前端开发的屏幕适配其实算是基本功,每个码农在长期实践中都有自己的总结. 在 iOS 平台上,苹果爸爸对适配的支持个人感觉很不 ...

  10. iOS 13适配汇总

    随着iPhone 11的发布,iOS 13适配也提上了日程,接下来就开发中升级iOS13的手机可能出现的问题 Xcode: 11.0 iOS : 13.0 UIViewController 模态弹出界 ...

最新文章

  1. Drupal的高速缓存配置APC
  2. 自动滑动图片html5,html+css+js 实现自动滑动轮播图
  3. dwz简单配置与操作
  4. Objective-C中的instancetype和id关键字
  5. 聊透分布式系统一致性
  6. IEEE Spectrum:这些小机器人又好玩又实用,适合过年带回家
  7. 在linux添加驱动程序,linux下静态/动态加载驱动的两种方式
  8. 淘宝类目批量查询工具使用教程
  9. java必背代码_java必背代码入门有哪些?如何写出优质代码?
  10. Android 获取当天零点的毫秒值并将时间格式化
  11. php又拍云,申请又拍云云存储教程(PHP V3.80+)
  12. 中国大地坐标系CGCS2000
  13. mysql8.0.15下载后怎么打开_mysql8.0.15下载安装详细教程新手必备!
  14. 给你一个小时,怎样有序撬启Web测试?
  15. 网页文字无法复制?学会这6种方法,想要的文字都能手到擒来
  16. python---做一个恶搞程序
  17. 支付宝小程序码管理生成
  18. IE浏览器安全性能在线测试(转)
  19. ssh 安装及登录提示:connection refused(ssh: connect to host XX.XX.XX.XX port 22: Connection refused)的解决办法
  20. 41. 盘点那些必问的数据结构算法题之链表

热门文章

  1. 计算机组成原理第六版课后题答案pdf,数据库第五版课后答案pdf
  2. DoDAF示例图绘制
  3. Java笔记(1)黑马刘意_Java入门_2019_idea版
  4. FlyMcu一键烧录STM32开发板时关于RTS和DTR电平方式的设置
  5. tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
  6. SQL进阶:数据中间表,多表取身份证号-整理-匹配多表-合并整理
  7. VMware 12 许可密钥
  8. 北风网 传智播客 视频地址
  9. 几道JAVA和分布式系统面试题总结
  10. LwIP协议栈——网络接口管理