迅速。 UISegmentedControl有两条不同的线

时间:2019-04-07 14:52:50

标签: swift uisegmentedcontrol

我需要用两行代码和不同的字体和大小来制作一个UISegmentedControl。

我设法做到只有两行,但是我不知道如何制作不同的大小和字体。

for segment in segmentedControl.subviews{
    for label in segment.subviews{
        if let labels = label as? UILabel{
            labels.numberOfLines = 2


        }
    }
}
segmentedControl.setTitle("Hiragana \n ひらがな", forSegmentAt: 0)
segmentedControl.setTitle("Katakana \n カタカナ", forSegmentAt: 1)

现在我有这样的东西:

enter image description here

想要这样:

enter image description here

2 个答案:

答案 0 :(得分:0)

UISegmentedControl不支持诸如UILabel这样的属性标题,因此不支持具有两种不同字体的标题。

一种解决方案是从UIImage创建NSAttributedString,然后将图像与分段控件一起使用。

另一种选择是创建自己的(或找到第3方)自定义控件,以使用属性标题。

答案 1 :(得分:0)

Apple提供的默认功能无法实现

但是您可以像处理行数一样遍历子视图

并添加

let attrString = NSMutableAttributedString(string: "Hiragana",
                                               attributes: [ 
NSAttributedString.Key.font: UIFont.systemFont(ofSize: 20) ])

    attrString.append(NSMutableAttributedString(string: "ひらがな",
                                                attributes: 
[NSAttributedString.Key.font: UIFont.systemFont(ofSize: 40) ]))

然后将其添加到标签

label.attributedText = attrString