UIButton中setTitleEdgeInsets和setImageEdgeInsets的使用

最近對UIButton進行了一定的研究,發(fā)現(xiàn)了一點有意思的東西。

UIButton上titleLabel和imageView的顯示原則。

1.當button.width < image.width時,只顯示被壓縮后的圖片,圖片是按fillXY的方式壓縮。

2.當button.width > image.width,且 button.width < (image.width + text.width)時,圖片正常顯示,文本被壓縮。

3.當button.width > (image.width + text.width),兩者并列默認居中顯示,可通過button的屬性contentHorizontalAlignment改變對齊方式。

setTitleEdgeInsets和setImageEdgeInsets的使用

想兩改變兩個子控件的顯示位置,可以分別通過setTitleEdgeInsets和setImageEdgeInsets來實現(xiàn)。需要注意的是,對titleLabel和imageView設置偏移,是針對它當前的位置起作用的,并不是針對它距離button邊框的距離的。如果只有title,那它上下左右都是相對于button的,image也是一樣;如果同時有image和label,那這時候image的上左下是相對于button,右邊是相對于label的;title的上右下是相對于button,左邊是相對于image的。

button的屬性contentHorizontalAlignmen(水平對齊方式)默認是居中的,同時button還有一個contentVerticalAlignment(豎直對齊方式)屬性默認也是居中的。在我們不改變這兩個值的情況下,需要明白默認情況下,button的image和label是緊貼著居中的。直接這樣設置很麻煩很燒腦,了解一下就可以了,在使用時不推薦!

把button的contentHorizontalAlignment設為居左時,contentVerticalAlignment設為居上時,可以很方便的通過EdgeInsets改變兩個子控件的位置。這樣圖片和文字就在button的左上角了。且圖片在前,文字在后。相當于image的初始位置變?yōu)榱耍?,0)title的初始位置變?yōu)榱?image.width,0)。這樣就可以像類似frame那樣去設置值了,便于理解。當然根據(jù)需要你可以只設置水平的或者垂直的對齊方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容