Ios 无自动布局的UILabel的自动帧高度

Ios 无自动布局的UILabel的自动帧高度,ios,swift,layout,frame,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 titleLa

我正试图找出如何实现以下目标。我需要为框架设置一个自定义高度,该高度随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中的行数自动更新,但最好是自然高度。有什么想法或解决办法吗

谢谢,
Liam

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

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

其中,size是标签的宽度,而高度则是一个非常大的数字。您应该阅读NSString类参考中的注意事项。

据我所知,没有自动布局,换行模式就无法工作!!!!如果你想让uilabel增加高度,你需要使用自动布局!!!!限制其宽度并使用换行模式!!!!我认为你需要像这样设置框架,以便将其添加为子视图。。。我错了吗?顺便说一句,换行模式确实有效。问题是,如果有三条线,那么高度会改变,而不是1或2条线。因此,将帧的高度设置为常量是没有意义的。