我试图弄清楚如何实现以下目标。我需要为框架自定义高度,该高度随UILabel的行数而变化。

let titleLabel:UILabel =
titleLabel.text = "The Never Ending Story That Never Ends"
titleLabel.lineBreakMode = .ByWordWrapping // or NSLineBreakMode.ByWordWrapping
titleLabel.numberOfLines = 0
titleLabel.font = UIFont(name: "Geomanist-Medium", size: 32)
titleLabel.frame = CGRectMake(16 + xOffset, screenSize.width + 20, screenSize.width - 32, 100)
self.scrollView.addSubview(titleLabel)


我想做的是用一个可变的替换titleLabel.frame的高度,该变量根据UILabel中的行数自动更新,但最好是自然高度。有什么想法或解决方法吗?

谢谢,
利亚姆

最佳答案

如果要获取多行文本的大小,可以使用

func boundingRectWithSize(_ size: CGSize,
                  options options: NSStringDrawingOptions,
               attributes attributes: [String : AnyObject]?,
                  context context: NSStringDrawingContext?) -> CGRect


其中size是标签所需的宽度,而高度则是一些非常大的数字。您应该阅读NSString类参考中的警告。

关于ios - 没有自动布局的UILabel的自动框架高度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33578123/

10-12 02:12