2015-11-07 61 views
0

我想弄清楚如何實現以下內容。我需要爲框架定製高度,並根據UILabel所具有的線條數量進行更改。沒有自動佈局的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行數的變量,但最好是自然的高度。任何想法或解決方法?

感謝, 利亞姆

+0

據我所知,換行符模式不工作沒有自動佈局!如果你想uilabel增加高度,你需要使用自動佈局!限制其寬度並使用換行符模式! –

+0

我認爲你需要設置框架,但是這樣做,以便將其添加爲子視圖...我錯了嗎? –

+0

換行符模式可以順利運行。問題是,如果有三條線,那麼高度會變化,而不是1或2條線。因此,將幀的高度設置爲常數是沒有意義的。 –

回答

0

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

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

哪裏大小是要用於標籤和一些非常大量的寬度高度。您應該閱讀NSString類引用中的注意事項。

相關問題