如何更改 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)])!,
])