今天解決了一個與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寬度設置。這樣就正常了