我的应用程序中有很多标签。更改所有字体大小的最佳方法是什么?例如:
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进行扩展,并实现将按比例返回所有应用字体的字体的方法。
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
希望它会启发你;)