2012-01-02 116 views
5

我有一個UIButton沒有文本,並有2個圖像我想使用(一個用於正常狀態,另一個用於選定狀態)。圖像比按鈕尺寸小。爲UIButton防止UIImage調整大小

如何確保在繪製按鈕時縮放圖像?設置imageView屬性只能正常更改正常狀態的比例,但不能選擇正常狀態。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

    [button setImage:imageNormal forState:UIControlStateNormal]; 
    [button setImage:imageSelected forState:UIControlStateSelected]; 

    // this shows the correct scale in normal mode but not when button is tapped 
    button.imageView.contentScaleFactor = 1.0; 
    button.imageView.contentMode = UIViewContentModeCenter; 
+0

**注意!!! **只有背景圖像被默認拉伸以匹配框架。使用「圖像」,而不是背景圖像,如果你想中心 – Fattie 2014-05-12 11:31:47

回答

10

假設你有圖像的高度和寬度,你可以這樣做:

int topBottom = (button.frame.size.height - imageHeight)/2; 
int leftRight = (button.frame.size.width - imageWidth)/2; 

button.imageEdgeInsets = UIEdgeInsetsMake(topBottom,leftRight,topBottom,leftRight); 

然後你不需要設置contentMode /比例因子。

+0

非常感謝! – james075 2013-03-01 17:38:37