Я делаю приложение без использования раскадровки. Приложение имеет длинный текст, поэтому я не могу получить достаточно места на одной строке. Приложение предназначено для iPad и iPhone. adjustSizeToFit = true
не работает, есть ли метод изменения размера метки с несколькими строками?Автоматическая термоусадочная этикетка с несколькими линиями Swift
ответ
Нет собственности на UILabel
под названием adjustSizeToFit
. Вы уверены, что не имеете в виду adjustsFontSizeToFitWidth
? Который, если вы посмотрите на документацию, говорит:
Обычно текст ярлыка нарисован шрифтом, указанным в свойстве шрифта. Однако, если для этого свойства установлено значение true, а текст в текстовом свойстве превышает ограничивающий прямоугольник метки, приемник начинает уменьшать размер шрифта до тех пор, пока строка не будет соответствовать или не будет достигнут минимальный размер шрифта. В iOS 6 и ранее это свойство действует только тогда, когда для свойства numberOfLines установлено значение 1.
Что я не уверен в том, что вы хотели.
Если вы хотели UILabel
с произвольным числом строк, где текст содержится в пределах определенной ширины, продолжайте чтение:
Что вы делаете, будет зависеть от того, используете ли вы AutoLayout или нет:
Не AutoLayout
Просто используйте:
let size = label.sizeThatFits(CGSize(width: myWidth, height: CGFloat.max))
// CGFloat.max, because we don't want to limit the UILabel's height.
label.frame.size = size
AutoLayout
Во-первых, вы должны установить numberOfLines
в ноль. Во-вторых, вам нужно указать AutoLayout, как долго каждая строка может быть, это не по умолчанию для ширины метки. Для этого вам нужен подкласс UILabel
:
class myLabel : UILabel {
override func layoutSubviews() {
// 1. Get the label to set its frame correctly:
super.layoutSubviews()
// 2. Now the frame is set we can get the correct width
// and set it to the preferredMaxLayoutWidth.
self.preferredMaxLayoutWidth = self.frame.width
}
}
Я программирую кнопку. Как подключить его к классу? – vladasha
Вы не упомянули ни одной кнопки в своем исходном вопросе. Я бы рекомендовал либо создать новый вопрос, либо много ресурсов в Интернете. Надеюсь, это поможет. – ABakerSmith
Это не похоже на эквивалент SKLabel? – Crashalot
Не могли бы вы немного подробнее рассказать о своей проблеме? Я не совсем понимаю, с чем вам нужна помощь. У вас есть ширина, вы также указали количество строк. Что именно вы пытаетесь выполнить, с чем вам нужна помощь? – MLyck
Непонятно, что вы просите. – Arbitur