没有自动布局的UILabel自动帧高度

时间:2015-11-07 01:27:37

标签: ios swift layout frame

我试图弄清楚如何实现以下目标。我需要为框架定制一个自定义高度,该高度随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)

我尝试做的是用一个根据UILabel中的行数自动更新的变量替换titleLabel.frame的高度,但最好是自然的高度。任何想法或解决方法?

谢谢, 利安

1 个答案:

答案 0 :(得分:0)

如果您想获得多行文字的大小,可以使用

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

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