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來實現。需要注意的是,對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的初始位置變為了(0,0)title的初始位置變為了(image.width,0)。這樣就可以像類似frame那樣去設置值了,便於理解。當然根據需要你可以只設置水平的或者垂直的對齊方式。