UILabel autolayout自動換行 版本區別

今天解決了一個與UILabel相關的Bug。 spa

表現爲在iOS7以上的系統中,UILabel可以自動換行,多行顯示的字符串,而在iOS6上面則不會自動換行,直接打省略號。 code

正常狀況下,numberOfLines設置爲0,UILabel就會自動換行了。 字符串

可是在iOS6下面須要設置preferredMaxLayoutWidth,autolayout纔會判斷到折行的位置,才能正確的顯示多行的UILabel class

可是preferredMaxLayoutWidth設置爲多少纔是正確的呢? autolayout

若是你知道一個確切的width固然是最好的,那麼直接設置便可, 自適應

可是若是UILabel的寬度是自適應的,不肯定,那麼能夠使用以下的代碼設置 layout

- (void)layoutSubViews
{
    [super layoutSubViews];
    self.label.preferredMaxLayoutWidth = self.label.bounds.size.width;
}
當label已經顯示到界面上的時候,那麼寬度就已經肯定了,能夠直接用此寬度做爲最大autolayout寬度設置。這樣就正常了
相關文章
相關標籤/搜索