Swift. UISegmentedControl с двумя разными строками - PullRequest
0 голосов
/ 07 апреля 2019

Мне нужно сделать 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 голосов
/ 07 апреля 2019

Невозможно достичь с помощью функциональности по умолчанию, предоставляемой 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 
0 голосов
/ 07 апреля 2019

UISegmentedControl не обеспечивает поддержку атрибутивных заголовков, таких как UILabel, поэтому поддержка заголовков с двумя разными шрифтами не поддерживается.

Одним из решений было бы создать UIImage из NSAttributedString и затем использовать изображения с вашим сегментированным элементом управления.

Другой вариант - создать собственный (или найти стороннего) пользовательский элемент управления, который работает с приписанными заголовками.

...