ios - 更改整个应用程序中的字体大小

标签 ios swift font-size

我的应用程序中有很多标签。更改所有字体大小的最佳方法是什么?例如:

func changeFontSize()
{
    var coefficient = 1.0
    switch device{
        case iPadPro:
            coefficient = 1.2
        case iPhone5:
            coefficient = 0.9
        case iPhone4:
            coefficient = 0.8
        ...
        updateFontSizeInApplication(coefficient)    
}

这可能吗?我应该根据设备在每个 Controller 上设置每个标签的系数吗?

最佳答案

尝试为 UIFont 做扩展并实现将返回所有应用字体的方法/缩放大小的字体。

extension UIFont {
    class func appFontName(size: CGFloat) -> UIFont {
        guard let font = UIFont(name: "YourFontName", size: scaledSize(size)) else {
            return UIFont.systemFontOfSize(scaledSize(size))
        }
        return font
    }

    private class func scaledSize(size: CGFloat) -> CGFloat {
        let coefficient = 1
        switch device { // pseudocode for checking device type
        case iPadPro:
            coefficient = 1.2
        case iPhone5:
            coefficient = 0.9
        case iPhone4:
            coefficient = 0.8
        }
        return size * coefficient
    }
}

示例用法:

let textField = UITextField()
textField.font = UIFont.appFontName(16) // on iPad it will be ~19

希望对您有所启发;)

关于ios - 更改整个应用程序中的字体大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228310/

相关文章:

Swift - 防止函数被调用两次

swift - 函数完成处理程序 Swift 4

javascript - 如何在tinyMCE中更改字体大小的基本度量单位?

html - 我可以在同一个样式表中同时使用 px 和 em 吗?

iOS 应用 View 选择

ios - 如何在项目中实现排行榜(游戏中心)

ios - iOS 14重新排序UICollectionViewCell时崩溃

ios - Google Map iOS - 缩放动画在两部不同手机上的工作方式不同(iPhone X 与 iPhone 7)

python - 如何设置 Matplotlib 轴图例的字体大小?

ios - Objective-C - 使用相同值的两个字典,强值或弱值