如何正确调整UILabel的内容? (见帖子里面的图片,以便更好地理解)

时间:2016-12-13 11:42:31

标签: ios swift xcode swift3 uilabel

  • 的iOS
  • Swift 3
  • XCode 8.2

大家好!如何设置标签的内容以显示需要多少行但不切割单个单词。请参阅上面附带的图片:在附件的示例中," Facebook"需要完全显示,而不是显示为" Facebo ok"或者" FACEB OOK"。

我的意思是,如果标签会根据需要在1,2,3,n行显示内容,那就没关系了,但是如果它和&我不希望它切断单个单词对于标签的界限太长了,我只想让它调整每个单词的大小,当它面对一个空格字符时,它就可以进入一个新的界限。

我希望我至少能清楚地了解我的一些问题!

感谢所有人提前!

截图: enter image description here

3 个答案:

答案 0 :(得分:0)

使用此功能

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

e.g。

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

从这里你可以得到标签的大小,并根据你的大小调整标签的框架。

别忘了在故事板上给标签和行的高度提供> =约束关系。

答案 1 :(得分: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`

答案 2 :(得分:0)

你应该简单地写下这段代码:

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

我希望这段代码可以帮助你......