關於UIButton的UIEdgeInsets屬性

2021-09-11 17:10:10 字數 1909 閱讀 7160

uibutton共有三個相關屬性: 1.contentedgeinsets 2.titleedgeinsets 3.imageedgeinsets 本文將一一介紹.

#uiedgeinsets 先來看看這個uiedgeinsets:

typedef struct uiedgeinsets  uiedgeinsets;

複製**

原來是結構體,它的四個引數:top, left, bottom, right, 分別表示距離上邊界,左邊界,下邊界,右邊界的位移,預設值均為0。

#contentedgeinsets 我們都知道,uibutton按鈕可以只設定乙個uilabel或者乙個uiimageview,還可以同時具有uilabel和uiimageview;如果給按鈕設定contentedgeinsets屬性,就是按鈕的內容整體(包含uilabel和uiimageview)進行偏移。 按鈕內容整體向右下分別移動10畫素:

button.contentedgeinsets = uiedgeinsetsmake(10, 10, -10, -10);

複製**

#titleedgeinsets & imageedgeinsets 這兩個屬性的效果是相輔相成的。如果給乙個按鈕同事設定了title和image,他們預設的狀態是在左,標題在右,而且image和title之間沒有空隙;那就這就引出乙個問題,title和image的uiedgeinsets屬性分別的相對於誰而言的?

真相只有乙個:image的uiedgeinsets屬性的top,left,bottom都是相對於按鈕的,right是相對於title; title的uiedgeinsets屬性的top,bottom,right都是相對於按鈕的,left是相對於image;

知道真相的你不知道有沒有眼淚流下來,怪不得之前怎麼設定都不是想要的結果,原來相對於誰的位移壓根沒有搞清楚。現在既然搞清楚了,我們來試一下:

title在左,image在右:

//拿到title和image的大小:

cgsize titlesize = self.purebutton.titlelabel.bounds.size;

cgsize imagesize = self.purebutton.imageview.bounds.size;

//分別設定偏移量:記住偏移量是位移

self.purebutton.titleedgeinsets = uiedgeinsetsmake(0, -imagesize.width, 0, imagesize.width);

self.purebutton.imageedgeinsets = uiedgeinsetsmake(0, titlesize.width, 0, -titlesize.width);

複製**

image在上,title在下:

// 向右移動的距離是標題寬度的一半,向上移動的距離是高度的一半

//標題 向左移動的距離是寬度的一半,向下移動的距離是標題高度的一半

self.purebutton.imageedgeinsets = uiedgeinsetsmake(-imagesize.height/2, titlesize.width/2, imagesize.height/2, -titlesize.width/2);

self.purebutton.titleedgeinsets = uiedgeinsetsmake(titlesize.height/2, -imagesize.width/2, -titlesize.height/2, imagesize.width/2);

複製**

#最後

這篇沒有demo...( 太簡單了)

關於UILabel和UIButton新增下劃線

關於uilabel和uibutton有的時候需要新增下劃線,一般有兩種方式通過預設的 nsmutableattributedstring設定,第二種就是在drawrect中畫一條下劃線,本文就簡單的選擇第一種,第二種有興趣的可以自己研究一下。uilabel設定下劃線 1 2 3 4 5 6 7 8 ...

UIKit學習 02 關於UIButton

按鈕的三種狀態 要為按鈕設定三種狀態都不同的外觀,那麼按鈕的type要設定為custom uibutton的常見設定 setget 建立 建立按鈕 uibutton btn uibutton alloc init 設定背景 btn setbackgroundimage uiimage imagena...

UIButton自帶的imageView的顯示

只有設定了之後,button.imageview才會顯示,要不然不會顯示,設定layer也不會顯示。要這樣之後,才會顯示 button setimage uiimage imagenamed laugthhorse.png forstate uicontrolstatenormal 接下來就可以設定...