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


場景,一個有圖片有文字的按鈕在其父控件上加了上左的約束,然后,有需要要調整按鈕與圖片之間的間距,第一想法就是設置title insets 的left。

然后問題出現了,這個按鈕的文字居然顯示不全了,也就是說在我們設置了title insets后,系統沒有再次sizeToFit類似的約束 ,當然sizeToFit是用frame時的讓其自動適應內容大小,在約束的情況下就得用約束了,但是又因為不同系統下的字號字體大小是不一樣的,所以titleLabel的寬度也是不定的。

自定義一個button,重寫

intrinsicContentSize

就可以了。在sb中設置title insets,然后就能跟sizeToFit一樣的效果了。

 

- (CGSize) intrinsicContentSize {
    CGSize s = [super intrinsicContentSize];

    // 這里我只加了左間距,其他的也就沒有必要寫出來了
    CGFloat w = s.width + self.titleEdgeInsets.left;
    return CGSizeMake(w,s.height);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM