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

3

我的应用中有很多标签。如何最好地更改所有字体大小?例如:

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)    
}

这是可能的吗?我是否应该根据设备在每个控制器上设置每个标签的系数?

2
你应该使用[UIFont preferredFontForTextStyle:]方法来设置标签字体,这样用户/iOS就可以选择适合的字体大小。 - dan
1个回答

2

尝试为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

希望它能给你启发;)


这将如何更新应用程序中每个当前标签的字体? - rmaddy
好的,你是对的。它不是一个可以更改应用程序中每个标签的单行代码,而是一种使用整个应用程序中的字体使其可根据设备进行扩展的方法。 - kamwysoc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接