【问题标题】:Change the font sizes in the whole application更改整个应用程序中的字体大小
【发布时间】:2017-03-06 19:33:09
【问题描述】:

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

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

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

【问题讨论】:

  • 您应该使用[UIFont preferredFontForTextStyle:] 方法来设置标签字体,以便用户/iOS 可以选择合适的字体大小。

标签: ios swift font-size


【解决方案1】:

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

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

希望它能启发你;)

【讨论】:

  • 这如何更新应用中每个当前标签的字体?
  • 好吧,你是对的。它不是更改应用程序中每个标签的单行代码,而是一种在整个应用程序中使用字体以使其在每个设备上可扩展的方式。
猜你喜欢
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-24
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多