I created a UIButton instance named "button" with an image using [UIButton setImage:forState:]
. The button.frame is larger than the image's size.
Now I want to scale this button's image smaller. I tried changing button.imageView.frame
, button.imageView.bounds
and button.imageView.contentMode
, but all seem ineffective.
Can anyone help me scale a UIButton
's imageView?
I created the UIButton
like this:
UIButton *button = [[UIButton alloc] init];
[button setImage:image forState:UIControlStateNormal];
I tried to scale the image like this:
button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.bounds = CGRectMake(0, 0, 70, 70);
and this:
button.imageView.contentMode = UIViewContentModeScaleAspectFit;
button.imageView.frame = CGRectMake(0, 0, 70, 70);
I'd faced similar problem, where I've a background Image (one with border) and an image (flag) for a custom button. I wanted flag to be scaled down and in center. I tried changing imageView's attribute but didn't succeed and was seeing this image --
During my experiments, I tried :
I achieved expected result as :
like this can solve your problem:
Strange, the only combo that worked for me (iOS 5.1) is...
button.imageView.contentMode = UIViewContentModeScaleAspectFit;
and
[button setImage:newImage forState:UIControlStateNormal];
Every UIButton has one hidden UIImageView of its own. So we have to set the content mode like the way given below...
Just do (From Design OR From Code):
From Design
[For Point#3: Change Horizontal and vertical Align to
UIControlContentHorizontalAlignmentFill and UIControlContentVericalAlignmentFill]
From Code
I just ran into this same problem, and there's a possible answer in this question:
Why does a custom UIButton image does not resize in Interface Builder?
Essentially, use the backgroundimage property instead, which does get scaled.