ios - iOS 应用程序中的白标字体
问题描述
我的任务是为 iOS 应用程序添加白标签。
我为 Assets 和 Info.plist 做了很多事情,我只是离开去管理fonts的白标解决方案。
例如,每个客户都希望拥有自己的标题字体。所以我想到了一些解决方案。
1)会有一些配置文件,我们可以在配置文件中写入客户字体,当应用程序运行时,我将从该配置文件中读取字体并应用它们,但不知道如何在每个屏幕上动态地使用它们。
2) 创建一些基本 ViewController 类并在此处应用字体,然后每个 viewController 类都将成为该基类的子类,并将视图控制器特定的标题字体应用于我的基本字体。
我不知道这些解决方案是否很好,提出这个问题的原因是为了获得一些建议和一些更好的解决方案。
也许有人比我更有经验,也许有人比我有更好的想法。每一个建议和帮助对我来说都是非常有价值的。
谢谢你。
解决方案
在这些情况下,我通常做的是,创建一个extension
forFont
类看看:
extension UIFont {
open class func boldAppFont(ofSize size:CGFloat) -> UIFont {
guard let f = UIFont(name: KTheme.FontName.bold, size: size)
else {
return UIFont.boldSystemFont(ofSize: size)
}
return f
}
open class func blackAppFont(ofSize size:CGFloat) -> UIFont {
guard let f = UIFont(name: KTheme.FontName.black, size: size)
else {
return UIFont.boldSystemFont(ofSize: size)
}
return f
}
}
现在您可以更改KTheme.FontName.bold
为您的字体名称并将其传递到您的请求中。只需确保使用此功能为每个组件设置字体。
您还可以使用它appearance
来制作全局效果。
现在让我们来解决下一个问题。您只能在应用程序中提供有限数量的字体。为了使用自定义字体,您的应用程序info.plist
必须知道这些字体。
在这种情况下,我会建议捆绑字体集并要求用户在其中进行选择。当他选择自定义字体时。
推荐阅读
- javascript - 如何在不冒 XSS <:out> 风险的情况下允许使用表情符号
- node.js - 有没有办法运行使用 Firebase id 令牌进行身份验证的单个 Firestore 查询?
- javascript - 如何将变量从 ajax 成功范围传递到全局范围?
- ruby - 使用 curl 发出请求,相当于 REST_CLIENT 请求
- azure - Azure Devops 生成的令牌的 openid-config url 是什么?
- python - Dask 分布式 KeyError
- c++ - 如何将 std::wstring 转换为 const TCHAR*?
- javascript - MVC C# 从后端传递到前端
- c# - 如何使用基于类型的linq动态选择
- java - lambda 表达式中的参数类型不兼容