Swift/Cocoa Touch:如何在 UILabel 中将动态调整大小的文本居中?
Swift/Cocoa Touch: How do I centre dynamically resized text in a UILabel?
我有一个 UILabel
采用其父视图的大小。
我希望标签文本调整大小以适应包含视图。
override func draw(_ rect: CGRect) {
let fontSize = self.frame.size.height * 0.9
var font = UIFont.preferredFont(forTextStyle: .body).withSize(fontSize)
font = UIFontMetrics(forTextStyle: .body).scaledFont(for: font)
let label = UILabel()
label.textAlignment = .center
label.font = font
label.frame.size = self.frame.size
label.minimumScaleFactor = 0.1
label.numberOfLines = 1
label.adjustsFontSizeToFitWidth = true
label.text = "5"
addSubview(label)
}
以上内容正是我想要的。数字 5 显示在包含视图的中心。但是,如果我将文本设置为更长的内容(例如:label.text = "5"
),它的垂直位置会发生变化。
如何确保无论字符串的长度如何,文本都会在垂直和水平方向上居中。
在您的 UILabel 设置中添加这行代码。应该按预期工作。这将使标签垂直居中。
label.baselineAdjustment = .alignCenters
我有一个 UILabel
采用其父视图的大小。
我希望标签文本调整大小以适应包含视图。
override func draw(_ rect: CGRect) {
let fontSize = self.frame.size.height * 0.9
var font = UIFont.preferredFont(forTextStyle: .body).withSize(fontSize)
font = UIFontMetrics(forTextStyle: .body).scaledFont(for: font)
let label = UILabel()
label.textAlignment = .center
label.font = font
label.frame.size = self.frame.size
label.minimumScaleFactor = 0.1
label.numberOfLines = 1
label.adjustsFontSizeToFitWidth = true
label.text = "5"
addSubview(label)
}
以上内容正是我想要的。数字 5 显示在包含视图的中心。但是,如果我将文本设置为更长的内容(例如:label.text = "5"
),它的垂直位置会发生变化。
如何确保无论字符串的长度如何,文本都会在垂直和水平方向上居中。
在您的 UILabel 设置中添加这行代码。应该按预期工作。这将使标签垂直居中。
label.baselineAdjustment = .alignCenters