如何更改 UISegmentedControl 中每个段的字体大小。 Swift
How to change font size for each segment in UISegmentedControl. Swift
我可以更改 UISegmentedControll 中每个段的字体大小吗?我知道我可以改变所有人,但我希望每个部分都有不同的字体大小。可能吗?
例如,如果我有 3 个段,我希望字体大小为 10、15、20。
谢谢
你不能用字符串作为段来做到这一点,但如果你要使用图像,这是可能的。
首先我们需要一个将字符串转换为图像的函数。 by @NoodleOfDeath 在 SO 上提供了一个很好的解决方案,不涉及使用 UIKit 控件:
extension String {
func image(withAttributes attributes: [NSAttributedString.Key: Any]? = nil, size: CGSize? = nil) -> UIImage? {
let size = size ?? (self as NSString).size(withAttributes: attributes)
return UIGraphicsImageRenderer(size: size).image { _ in
(self as NSString).draw(in: CGRect(origin: .zero, size: size),
withAttributes: attributes)
}
}
}
然后您只需将图像而不是字符串插入到您的 UISegmentedControl 中:
let segmentedControl = UISegmentedControl(items: [
"Paris".image(withAttributes: [.font: UIFont.systemFont(ofSize: 10)])!,
"London".image(withAttributes: [.font: UIFont.systemFont(ofSize: 15)])!,
"Berlin".image(withAttributes: [.font: UIFont.systemFont(ofSize: 20)])!,
])
我可以更改 UISegmentedControll 中每个段的字体大小吗?我知道我可以改变所有人,但我希望每个部分都有不同的字体大小。可能吗? 例如,如果我有 3 个段,我希望字体大小为 10、15、20。 谢谢
你不能用字符串作为段来做到这一点,但如果你要使用图像,这是可能的。
首先我们需要一个将字符串转换为图像的函数。
extension String {
func image(withAttributes attributes: [NSAttributedString.Key: Any]? = nil, size: CGSize? = nil) -> UIImage? {
let size = size ?? (self as NSString).size(withAttributes: attributes)
return UIGraphicsImageRenderer(size: size).image { _ in
(self as NSString).draw(in: CGRect(origin: .zero, size: size),
withAttributes: attributes)
}
}
}
然后您只需将图像而不是字符串插入到您的 UISegmentedControl 中:
let segmentedControl = UISegmentedControl(items: [
"Paris".image(withAttributes: [.font: UIFont.systemFont(ofSize: 10)])!,
"London".image(withAttributes: [.font: UIFont.systemFont(ofSize: 15)])!,
"Berlin".image(withAttributes: [.font: UIFont.systemFont(ofSize: 20)])!,
])