Bha*_*ddy 4 uilabel uifont swift
我正在为 iPhone 系列开发基于 swift 的 iOS 应用程序。我的应用程序支持从 iPhone 4s 到 iPhone X 的所有设备。在 iPhone 4s 等较小设备中,标签看起来更大,因为我为高端设备添加了更大的字体大小。有人可以帮助我如何根据设备缩放字体。我尝试了具有紧凑/常规宽度和紧凑/常规高度的尺寸类别,但它们都没有帮助我。非常感激你的帮助
以编程方式
在不使用故事板的情况下,我可以根据屏幕宽度简单地更改字体大小,如下所示:
func dynamicFontSize(_ FontSize: CGFloat) -> CGFloat {
let screenWidth = UIScreen.main.bounds.size.width
let calculatedFontSize = screenWidth / 375 * FontSize
return calculatedFontSize
}
Run Code Online (Sandbox Code Playgroud)
并可用作:
myLabel.font = UIFont(name: "Helvetica", size: dynamicFontSize(20))
Run Code Online (Sandbox Code Playgroud)
请注意,在dynamicFontSize函数中,数字375只是字体大小计算的基础,因为我通常在 iPhone 8 上测试我的应用程序(即字体大小 18在 iPhone 8 上实际上是18,因为其实际宽度为 375)。该数字可以根据您的喜好进行更改。
故事板
如果您坚持使用情节提要,您可以创建一个新的 swift 文件子类化UILabel并使用@IBInspectable如下所示:
import UIKit
class UILabelFontClass: UILabel {
@IBInspectable var DynamicFontSize: CGFloat = 0 {
didSet {
overrideFontSize(FontSize: DynamicFontSize)
}
}
func overrideFontSize(FontSize: CGFloat){
let fontName = self.font.fontName
let screenWidth = UIScreen.main.bounds.size.width
let calculatedFontSize = screenWidth / 375 * FontSize
self.font = UIFont(name: fontName, size: calculatedFontSize)
}
}
Run Code Online (Sandbox Code Playgroud)
UILabelFontClass标签的
内部故事板子类:
现在在属性检查器中,您可以设置字体大小:

| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |