产品设计之动态字体大小

简介: iOS的“设置” –> “显示与亮度” –> “文字大小”,可以修改默认的系统字体大小,当修改之后,系统自带的应用如信息等都会随之改变,手机QQ会随之发生变化: 而微信的字体大小并不会随系统的字体大小改变而改变,微信自己有设置文字大小的功能,在“我” –> “设置” –> “通用”-> “字体...

iOS的“设置” –> “显示与亮度” –> “文字大小”,可以修改默认的系统字体大小,当修改之后,系统自带的应用如信息等都会随之改变,手机QQ会随之发生变化:

而微信的字体大小并不会随系统的字体大小改变而改变,微信自己有设置文字大小的功能,在“我” –> “设置” –> “通用”-> “字体大小”中进行设置

 

iOS中如果想做到跟随系统默认的字体大小改变而改变,怎么实现呢,步骤如下:

1、设置字体的新式为UIFontTextStyle某个选项;

2、注册通知,监听字号改号改变时修改字体然后重新更新一下布局;

- (id)initWithStyle:(UITableViewStyle)style {
    if (self = [super initWithStyle:style]) {
        if (IOS_VERSION >= 7.0)
        {
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleContentSizeCategoryDidChanged:) name:UIContentSizeCategoryDidChangeNotification object:nil];
        }
    }
}
 
//
- (void)handleContentSizeCategoryDidChanged:(NSNotification *)notification
{
    //update font size/frame and view
}
 
更多细节可参考:
 
iOS中如果想实现字体大小随UILabel的宽度进行自适应,可使用adjustsFontSizeToFitWidth,更多详情可参考这篇文章: 详解UILabel的adjustsFontSizeToFitWidth值

 

Android默认是跟随系统字体大小改变而改变的,那如果想避免受系统字体大小的影响,如何处理(4.0开始,系统提供修改字体大小功能)?

方法一、将TextView的字体单位由sp改为dp;

方法二、在自定义的Activity中重写getResources方法;

@Override
public Resources getResources() {
    Resources res = super.getResources();
    Configuration conf = new Configuration();
    conf.setToDefaults();
    res.updateConfiguration(conf, res.getDisplayMetrics());
    return res;
}
 
更多详情可参考:
 
 
那React Native呢?写这篇文章也是因为发现了默认RN是跟随系统自带的字体大小变化而变化的,当时还比较惊讶,后来查文档发现默认就支持了,如果想禁用直接设置属性allowFontScaling为false(默认为true)
 
而如果你想根据不同的屏幕大小使用不同的字号,可以参考这里: how to set font size for different IOS devices in react native

目录
相关文章
|
iOS开发
iOS 富文本添加点击事件
iOS 富文本添加点击事件
2002 0
iOS 富文本添加点击事件
|
Docker 容器
Minio Docker安装官方指南
Minio Docker安装官方指南
Minio Docker安装官方指南
|
1月前
|
运维 Ubuntu API
零门槛入门:OpenClaw 阿里云及本地部署超详细教程+核心基础操作全解析
OpenClaw的基础操作是高效使用的基石,通过服务管理、模型配置、日志排查三类核心命令,可解决绝大多数使用问题。2026年优化后的阿里云/本地双部署方案,让基础操作更简洁,新手也能快速上手。建议先熟练掌握“服务启停、状态查看、日志排查”等基础命令,再根据任务需求调整模型配置——临时任务用强模型,日常任务用快模型,本地部署可接入Ollama实现离线使用。通过本文的命令速查与实操步骤,你可以轻松实现OpenClaw的全流程管理,从部署到上手一气呵成。
568 1
|
Linux Python
百度搜索:蓝易云【Centos 7系统安装python 3.9.10详细教程。】
现在,你已经成功在CentOS 7系统上安装了Python 3.9.10。你可以使用 `python3.9`命令来运行Python 3.9.10版本的解释器。请根据实际需要进行配置和使用。
685 0
|
人工智能 自然语言处理 算法
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
国产新型AI编程助手—DevChat AI插件在VSCode中的应用
1151 0
|
5月前
|
存储 弹性计算 应用服务中间件
阿里云服务器武汉地域收费价格:CPU内存、带宽和存储费用标准
阿里云武汉地域(华中1)提供本地节点,含ECS云服务器、按量及包月计费模式。1M带宽23元/月,流量0.8元/GB。支持ESSD多种存储,推荐就近选杭州、上海等地享受爆款优惠,如2核2G低至38元/年。价格仅供参考,具体以官网为准。
814 3
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
运维 测试技术
当一个按键“摆烂”时,需要更换整个键盘吗?
键盘按键失灵时,别急着更换整个键盘!本文教你通过三步解决:诊断病因、对症下药、预防复发。首先进行“键盘体检”,包括跨设备验证、软件驱动测试、BIOS检测及硬件检查,找出是污垢、物理损坏还是电路故障。接着针对问题提供治疗方案,如更新驱动、清洁键槽或更换零件。最后提醒大家优先排查软件问题,温柔清洁,理性对待物理损坏,并建议选购可维护性强的键盘。记住,善待键盘,远离零食屑,让输入更顺畅!
825 3
|
缓存 Linux Shell
Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南
什么是cgroup? cgroups其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组(如CPU、内存、磁盘输入输出等)。 什么是Docker资源限制?
|
Web App开发 编解码 iOS开发
iOS字体像素与磅的对应关系
iOS字体像素与磅的对应关系
2014 1