2014年2月7日 星期五

調整UIButton的Image大小

SetBackgroundImage

當給定一個固定大小的UIButton時,如果圖的大小跟UIButton不同,一種解法是

UIImage *image = [UIImage imageNamed:@"buttonImage"];
UIEdgeInsets edgeInsets = UIEdgeInsetsMake(30.0f, 25.0f, 29.0f, 9.0f);
UIImage *resizeableImage = [image resizableImageWithCapInsets:edgeInsets];
[backButton setBackgroundImage:resizeableImage forState:UIControlStateNormal];

SetImage

如果背景圖已經用掉了,也就是UIButton現在已經有背景圖,但是前景還想再放一個跟按鈕大小不同的圖,這時可以利用UIButton裡的UIImageView。Stackoverflow上有教一個方法是

[button setContentMode:UIViewContentModeScaleAspectFit];

但是這個只能放大圖不能縮小圖。

另一種方法是透過設定imageEdgeInsets可以縮小Image

[button setImage:[UIImage imageNamed:@"buttonImage"] forState:UIControlStateNormal];
button.imageEdgeInsets = UIEdgeInsetsMake(10,20,10,20);

效果大概像這樣
original
Modified
圖片來自http://stackoverflow.com/questions/1957317/how-do-i-scale-a-uibuttons-imageview, Hitesh Savaliya的答案

沒有留言:

張貼留言