更改整个应用程序中的字体大小
Change the font sizes in the whole application
我的应用程序中有很多标签。更改所有字体大小的最佳方法是什么?例如:
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 进行扩展并实施 method/s,这将 returns 您的所有应用 font/fonts 缩放尺寸。
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
希望对您有所启发 ;)
我的应用程序中有很多标签。更改所有字体大小的最佳方法是什么?例如:
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 进行扩展并实施 method/s,这将 returns 您的所有应用 font/fonts 缩放尺寸。
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
希望对您有所启发 ;)