2015-04-04 4 views
2

Я делаю приложение без использования раскадровки. Приложение имеет длинный текст, поэтому я не могу получить достаточно места на одной строке. Приложение предназначено для iPad и iPhone. adjustSizeToFit = true не работает, есть ли метод изменения размера метки с несколькими строками?Автоматическая термоусадочная этикетка с несколькими линиями Swift

+0

Не могли бы вы немного подробнее рассказать о своей проблеме? Я не совсем понимаю, с чем вам нужна помощь. У вас есть ширина, вы также указали количество строк. Что именно вы пытаетесь выполнить, с чем вам нужна помощь? – MLyck

+0

Непонятно, что вы просите. – Arbitur

ответ

3

Нет собственности на 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 
    } 
} 
+0

Я программирую кнопку. Как подключить его к классу? – vladasha

+0

Вы не упомянули ни одной кнопки в своем исходном вопросе. Я бы рекомендовал либо создать новый вопрос, либо много ресурсов в Интернете. Надеюсь, это поможет. – ABakerSmith

+0

Это не похоже на эквивалент SKLabel? – Crashalot