2016-12-13 1 views
0
  • IOS
  • Swift 3
  • XCode 8.2

Привет, ребята! Как я могу установить содержание метки, чтобы отображать, сколько строк нужно, но не разрезать одно слово. См. Изображение, приведенное выше: в примере в приложениях «Facebook» необходимо полностью отобразить и не отображать как «Facebo ok» или «FACEB OOK».Как правильно изменить содержимое UILabel? (Смотри рисунок внутри поста, чтобы лучше понять)

Я имею в виду, что это нормально, если на этикетке будет отображаться содержимое в 1, 2, 3, n строках столько, сколько нужно, но я не хочу, чтобы оно разрезало одно слово, если оно слишком длинное для метки , я просто хочу, чтобы он изменял размер каждого слова и когда он сталкивался с символом пробела, тогда он может перейти в новую строку.

Надеюсь, я понял, по крайней мере, немного понять мою проблему!

Спасибо всем!

Скриншот: enter image description here

+1

Вы должны использовать WordWrap в этикетке. См. Http://stackoverflow.com/a/38653448/1423703 –

+0

выберите Label from Interface builder и инспектор атрибутов выберите вариант масштаба (минимум) и запустите –

+0

Alok Rao спасибо, но, как я уже сказал на приведенных ниже вопросах, word-wrap возвращается меня слово отрезало (он возвращает мне «Faceb», даже «Facebo/n ok»). Shobhakar Tiwari уже сделал, но не сработал. –

ответ

0

используют эту функ

func boundingRect(with size: CGSize, 
      options: NSStringDrawingOptions = [], 
     attributes: [String : Any]? = nil, 
      context: NSStringDrawingContext?) -> CGRect 

например,

let sizeOfString = label.text.boundingRectWithSize(
           CGSizeMake(self.label.frame.size.width, CGFloat.infinity), 
           options: NSStringDrawingOptions.UsesLineFragmentOrigin, 
           attributes: [NSFontAttributeName: lbl.font], 
           context: nil).size 

Оттуда вы получаете размер этикетки и изменяете размер рамки в соответствии с вами.

Не забывайте придать> = отношение противоположности к высоте метки и линий к 0 из раскадровки.

0

Если я правильно понимаю, вам просто нужно масштабировать содержимое метки, чтобы оно соответствовало заданным границам без переноса символов. Если приведенное выше верно, то попробуйте выполнить приведенный ниже код, чтобы решить вашу проблему. Вам нужно будет отрегулировать minimumScaleFacotr ярлыка, чтобы он мог изменять его содержимое.

label.adjustsFontSizeToFitWidth = true // To adjust text to expand at all available space 
label.minimumScaleFactor = 0.5 // The minimum scale factor that your label may reach to fit 
label.lineBreakMode = NSLineBreakMode.byWordWrapping // Wrap at word boundaries 
label.numberOfLines = 0 // For multiple lines till text fits` 
+0

Спасибо за ваш ответ, но эта функция дает мне слово в измерении по умолчанию, но оно отрезано и вообще не изменяется. Например, он возвращает мне «Faceb», что еще хуже, чем оригинальная проблема, которую я опубликовал! : p В любом случае спасибо вам большое! –

0

Вы должны просто написать этот код:

Label.adjustsFontSizeToFitWidth = true 
Label.numberOfLines = 2 
Label.text = "HelloHowAreYou? Fine." 

Я надеюсь, что эта кодовая поможет ...

+0

Спасибо, но, к сожалению, это не сработало ... Просто попробовал и всегда дает первое слово, отрезанное, если оно слишком длинное. –

+0

Вы должны добавить разрыв строки ** Wordwrap **: 'label.lineBreakMode = NSLineBreakMode.ByWordWrapping' –

Смежные вопросы