2012-01-02 31 views
5

Tôi có một UIButton không có văn bản và có 2 hình ảnh tôi muốn sử dụng (một cho trạng thái bình thường và hình kia cho trạng thái đã chọn). Các hình ảnh nhỏ hơn kích thước nút.Ngăn thay đổi kích thước UIImage cho UIButton

Làm cách nào để đảm bảo rằng cả hai hình ảnh đều không được thu nhỏ khi nút được vẽ? Việc đặt thuộc tính imageView chỉ thay đổi tỷ lệ chính xác cho trạng thái bình thường nhưng không thay đổi cho đã chọn.

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

** NOTE !!! ** chỉ hình nền được kéo dài theo mặc định để khớp với khung. Sử dụng "hình ảnh" và không phải hình nền, nếu bạn muốn nó làm trung tâm – Fattie

Trả lời

10

Giả sử bạn có chiều cao hình ảnh và chiều rộng bạn có thể làm điều này:

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

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

Và sau đó bạn không cần phải thiết lập các contentMode/scalefactor.

+0

cảm ơn rất nhiều! – james075

Các vấn đề liên quan