場景,一個有圖片有文字的按鈕在其父控件上加了上左的約束,而後,有須要要調整按鈕與圖片之間的間距,第一想法就是設置title insets 的left。字體
而後問題出現了,這個按鈕的文字竟然顯示不全了,也就是說在咱們設置了title insets後,系統沒有再次sizeToFit相似的約束 ,固然sizeToFit是用frame時的讓其自動適應內容大小,在約束的狀況下就得用約束了,可是又由於不一樣系統下的字號字體大小是不同的,因此titleLabel的寬度也是不定的。spa
自定義一個button,重寫code
intrinsicContentSize
就能夠了。在sb中設置title insets,而後就能跟sizeToFit同樣的效果了。blog
- (CGSize) intrinsicContentSize { CGSize s = [super intrinsicContentSize]; // 這裏我只加了左間距,其餘的也就沒有必要寫出來了 CGFloat w = s.width + self.titleEdgeInsets.left; return CGSizeMake(w,s.height); }