UIView的intrinsicContentSize方法,在按鈕中重寫

場景,一個有圖片有文字的按鈕在其父控件上加了上左的約束,而後,有須要要調整按鈕與圖片之間的間距,第一想法就是設置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);
}
相關文章
相關標籤/搜索