iOS字体适配方法总结
背景:有时候我们需要在不同尺寸的屏幕上适配不同大小的字体
思路:不同尺寸屏幕不同字体大小通过【等比例缩放 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字体适配方法总结相关推荐
- iOS 字体适配的几种方法总结
在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏定义 ...
- iOS 字体适配(转)
微信字体尺寸适配: https://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207113485&idx=1&sn=c4961 ...
- vue-vant项目字体以及组件字体适配
1. 页面中字体适配的方法: 新建一个rem.js文件: const baseSize = 32 function setRem () {const scale = document.document ...
- iOS字体大小适配的几种方法
摘要:在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏 ...
- iOS字体大小适配机型的几种方法
在iOS开发中,有些公司对字体也有适配要求,为了让字体美观,所以在不同尺寸的屏幕上字体大小也要做到适配. 自己总结了几种方法供大家参考. 方法一:用宏定义适配字体大小(根据屏幕尺寸判断) //宏定义 ...
- ios 字体 机打动效_24种打动朋友的方法
ios 字体 机打动效 In the run up to Christmas, learn a new web development tip every day at 24 ways - by Ch ...
- html5开发之ios屏幕适配,iOS开发屏幕尺寸以及屏幕适配等问题(转载内容)
原帖地址:http://blog.csdn.net/phunxm/article/details/42174937/ 仅供我个人收藏学习,原博主如不同意请联系qq651263878进行删除,在此表示感 ...
- iOS 9 适配中出现的坑
整理 iOS 9 适配中出现的坑(图文) 2015-10-22 iOS开发 库克表示:"现在在中国有150多万的开发者在iOS当中开发应用程序,我们鼓励更多的人开发应用程序,也鼓励更多的创业 ...
- iOS 屏幕适配浅谈
作者 | 钱凯 杏仁移动开发工程师,前嵌入式工程师,关注大前端技术新潮流. 前端开发的屏幕适配其实算是基本功,每个码农在长期实践中都有自己的总结. 在 iOS 平台上,苹果爸爸对适配的支持个人感觉很不 ...
- iOS 13适配汇总
随着iPhone 11的发布,iOS 13适配也提上了日程,接下来就开发中升级iOS13的手机可能出现的问题 Xcode: 11.0 iOS : 13.0 UIViewController 模态弹出界 ...
最新文章
- Drupal的高速缓存配置APC
- 自动滑动图片html5,html+css+js 实现自动滑动轮播图
- dwz简单配置与操作
- Objective-C中的instancetype和id关键字
- 聊透分布式系统一致性
- IEEE Spectrum:这些小机器人又好玩又实用,适合过年带回家
- 在linux添加驱动程序,linux下静态/动态加载驱动的两种方式
- 淘宝类目批量查询工具使用教程
- java必背代码_java必背代码入门有哪些?如何写出优质代码?
- Android 获取当天零点的毫秒值并将时间格式化
- php又拍云,申请又拍云云存储教程(PHP V3.80+)
- 中国大地坐标系CGCS2000
- mysql8.0.15下载后怎么打开_mysql8.0.15下载安装详细教程新手必备!
- 给你一个小时,怎样有序撬启Web测试?
- 网页文字无法复制?学会这6种方法,想要的文字都能手到擒来
- python---做一个恶搞程序
- 支付宝小程序码管理生成
- IE浏览器安全性能在线测试(转)
- ssh 安装及登录提示:connection refused(ssh: connect to host XX.XX.XX.XX port 22: Connection refused)的解决办法
- 41. 盘点那些必问的数据结构算法题之链表
热门文章
- 计算机组成原理第六版课后题答案pdf,数据库第五版课后答案pdf
- DoDAF示例图绘制
- Java笔记(1)黑马刘意_Java入门_2019_idea版
- FlyMcu一键烧录STM32开发板时关于RTS和DTR电平方式的设置
- tiledmap 图块属性_cocos2dx[3.4](25)——瓦片地图TiledMap
- SQL进阶:数据中间表,多表取身份证号-整理-匹配多表-合并整理
- VMware 12 许可密钥
- 北风网 传智播客 视频地址
- 几道JAVA和分布式系统面试题总结
- LwIP协议栈——网络接口管理