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
At the bottom left of screenshot, you can see Stretching properties. Try using those.
For the original poster, here is the solution I found:
commentButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
This will allow your button to scale horizontally. There is a vertical setting as well.
Took me several hours to figure that one out (the naming of the property is very unintuitive) so figured I'd share.
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.
like this can solve your problem:
+ (UIImage*)resizedImage:(UIImage*)image
{
CGRect frame = CGRectMake(0, 0, 60, 60);
UIGraphicsBeginImageContext(frame.size);
[image drawInRect:frame];
UIImage* resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
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 :
button.imageEdgeInsets = UIEdgeInsetsMake(kTop,kLeft,kBottom,kRight)
I achieved expected result as :
I hope this can help to somebody else:
Swift 3+
button.contentHorizontalAlignment = UIControlContentHorizontalAlignment.fill
button.contentVerticalAlignment = UIControlContentVerticalAlignment.fill