1>眾所周知,在給系統(tǒng)的Button設(shè)置文字和image的時(shí)候(非背景顏色),系統(tǒng)默認(rèn)是左邊圖片,右邊文字,可現(xiàn)在需求是,左邊是文字右邊是圖片.那么我們?nèi)绾螌?shí)現(xiàn)這一效果呢?
button有一個(gè)我們很少用的兩個(gè)屬性,分別是imageEdgeInsets和titleEdgeInsets,這兩個(gè)屬性就是分別設(shè)置圖片和文字的距上下左右的距離,我們可以這樣設(shè)置
addressBtn.imageEdgeInsets=UIEdgeInsetsMake(0, addressBtn.titleLabel.w,0, -addressBtn.titleLabel.w);
addressBtn.titleEdgeInsets=UIEdgeInsetsMake(0, -addressBtn.imageView.w,0, addressBtn.imageView.w);
具體的微調(diào),大家可以自己慢慢試.
2>當(dāng)一切設(shè)置完畢之后,你會(huì)發(fā)現(xiàn),嗯位置好了,但是圖片顯示不符合我的要求,可能image會(huì)顯示成這個(gè)樣子
這個(gè)問(wèn)題困擾了筆者好久,嘗試用了"端蓋"等方法來(lái)改變圖片的樣式,可是也解決不了.詳情請(qǐng)見(jiàn)iOS圖片拉伸技巧 - M了個(gè)J - 博客頻道 - CSDN.NET
最終筆者是寫了一個(gè)UIImage+scale的分類解決了,
.h文件
#import
@interfaceUIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size;
@end
.m文件
#import"UIImage+scale.h"
@implementationUIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[selfdrawInRect:CGRectMake(0,0, size.width, size.height)];
UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
returnscaledImage;
}
@end
代碼的使用:
[addressBtn setTitle:@"北京"forState:UIControlStateNormal];
UIImage* image1 = [UIImageimageNamed:@"weizhi"];
[addressBtn setImage:[image1 scaleToSize:CGSizeMake(9.5,13.0)]forState:UIControlStateNormal];
最終達(dá)成的效果為:
如有問(wèn)題歡迎一起討論,可以在簡(jiǎn)書(shū)解答疑問(wèn).