UIButton的imageEdgeInsets 和 titleEdgeInsets


我們知道,在UIButton中有一個UILabel和一個UIImageView,同時還有屬性: titleEdgeInsets,imageEdgeInsets。介紹下 imageEdgeInsets 和 titleEdgeInsets 的用法。

UIEdgeInsets

  首先,titleEdgeInsets 和 imageEdgeInsets 都是 UIEdgeInsets類型。UIEdgeInsets 是一個結構體,定義如下:

typedef struct UIEdgeInsets { CGFloat top, left, bottom, right; 
} UIEdgeInsets;

四個值依次是:上、左、下、右,代表的是距離上邊界、左邊界、下邊界、右邊界的位移,默認都是0。

示例

  首先創建一個button,button有image和title,代碼如下:

UIButton *searchBtn = [[UIButton alloc] initWithFrame:CGRectMake(50,100,100,50)];
searchBtn.backgroundColor = [UIColor yellowColor];
[self.view addSubview:searchBtn];
UIImage *searchImage = [UIImage imageNamed:@"search"];
[searchBtn setImage:searchImage forState:UIControlStateNormal];
[searchBtn setTitle:@"測試" forState:UIControlStateNormal];
[searchBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

此時,button的形狀是默認的,如下:

設置一下button 的 imageEdgeInsets:

[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(20, 0, 0, 0)];

含義是:image距離上側的邊距增加20,也就是image向下偏移20,此時button的形狀如下:

[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(0, -20, 0, 0)];

含義:image距左側的邊距減少20,也就是image向左偏移20,此時button的形狀如下:

[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, -20)];

含義:image距右側的距離減少20,也就是image向右偏移20,此時button的形狀如下:

[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(0,0,20,0)];

含義:距離下側的距離增加20,也就是image向上偏移20,此時button的形狀如下:

至此,UIButton 的 imageEdgeInsets 里面的四個參數代表的含義已經非常清楚了,同理,titleEdgeInsets的四個參數代表的含義也是一樣的。

文字和圖片位置互換

  理解了 imageEdgeInsets 和 titleEdgeInsets,現在實現將文字和圖片位置互換。

  第一步:把image移到右面,相當於上側和下側不變,左側增加一段距離,右側減少一段距離;

  第二步:把title移到左面,相當於上側和下側不變,左側減少一段距離,右側增加一段距離;

首先算出圖片和文字的寬度:

CGFloat imageWidth = searchImage.size.width;
[searchBtn.titleLabel sizeToFit];
CGFloat titleWidth = searchBtn.titleLabel.frame.size.width;

把image 移到右面:

[searchBtn setImageEdgeInsets:UIEdgeInsetsMake(0,titleWidth,0,-titleWidth)];

把title 移到左面:

[searchBtn setTitleEdgeInsets:UIEdgeInsetsMake(0,-imageWidth,0,imageWidth)];

最后的效果圖:


免責聲明!

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



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