How to adjust an UIButton's imageSize?
If I understand correctly what you're trying to do, you need to play with the buttons image edge inset. Something like:
myLikesButton.imageEdgeInsets = UIEdgeInsets(top: 30, left: 30, bottom: 30, right: 30)
How to scale image and center it on a UIButton in Swift?
Xcode 8.3.1 • Swift 3.1
let button = UIButton(type: .custom)
let image = UIImage(named: "myimage.png")
func buttonTouchDown(_ button: UIButton) {
print("button Touch Down")
}
override func viewDidLoad() {
super.viewDidLoad()
button.frame = CGRect(x: 0, y: 0 , width: 100, height: 100)
button.backgroundColor = .clear
button.addTarget(self, action: #selector(buttonTouchDown), for: .touchDown)
button.setTitle("Title", for: .normal)
button.setTitleColor(.black, for: .normal)
button.setImage(image, for: .normal)
button.imageEdgeInsets = UIEdgeInsetsMake(25,25,25,25)
view.addSubview(button)
}
How to scale UIButton without scaling image in Swift?
You can set Image in button Image. will not scale but you can set button as you want. See in the image my button have 100*100 image and button have more size than image.
scale Image in an UIButton to AspectFit?
If you really want to scale an image, do it, but you should resize it before using it. Resizing it at run time will just lose CPU cycles.
This is the category I'm using to scale an image :
UIImage+Extra.h
@interface UIImage (Extras)
- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize;
@end;
UIImage+Extra.m
@implementation UIImage (Extras)
- (UIImage *)imageByScalingProportionallyToSize:(CGSize)targetSize {
UIImage *sourceImage = self;
UIImage *newImage = nil;
CGSize imageSize = sourceImage.size;
CGFloat width = imageSize.width;
CGFloat height = imageSize.height;
CGFloat targetWidth = targetSize.width;
CGFloat targetHeight = targetSize.height;
CGFloat scaleFactor = 0.0;
CGFloat scaledWidth = targetWidth;
CGFloat scaledHeight = targetHeight;
CGPoint thumbnailPoint = CGPointMake(0.0,0.0);
if (!CGSizeEqualToSize(imageSize, targetSize)) {
CGFloat widthFactor = targetWidth / width;
CGFloat heightFactor = targetHeight / height;
if (widthFactor < heightFactor)
scaleFactor = widthFactor;
else
scaleFactor = heightFactor;
scaledWidth = width * scaleFactor;
scaledHeight = height * scaleFactor;
// center the image
if (widthFactor < heightFactor) {
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5;
} else if (widthFactor > heightFactor) {
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5;
}
}
// this is actually the interesting part:
UIGraphicsBeginImageContextWithOptions(targetSize, NO, 0);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = thumbnailPoint;
thumbnailRect.size.width = scaledWidth;
thumbnailRect.size.height = scaledHeight;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
if(newImage == nil) NSLog(@"could not scale image");
return newImage ;
}
@end
You can use it to the size you want. Like :
[self.itemImageButton setImage:[stretchImage imageByScalingProportionallyToSize:CGSizeMake(20,20)]];
How to set image size in UIButton?
There may be two options to fix the problem.
Set the content mode to .scaleAspectFit and the image should not go out of the bounds :
myButton.imageView?.contentMode = .scaleAspectFit
Adjust the image insets:
myLikesButton.imageEdgeInsets = UIEdgeInsetsMake(top, left, bottom, right)
How to resize an image inside an UIButton programmatically?
This can be done through code in the following way:
let imageSize:CGSize = CGSize(width: 20, height: 20)
let button:UIButton = UIButton(type: UIButton.ButtonType.custom)
button.frame = CGRect(x: 200, y: 200, width: 60, height: 60)
button.backgroundColor = UIColor.yellow
button.setImage(UIImage(named: "chat.png"), for: UIControl.State.normal)
// The below line will give you what you want
button.imageEdgeInsets = UIEdgeInsets(
top: (button.frame.size.height - imageSize.height) / 2,
left: (button.frame.size.width - imageSize.width) / 2,
bottom: (button.frame.size.height - imageSize.height) / 2,
right: (button.frame.size.width - imageSize.width) / 2)
self.view.addSubview(button)
This way, you can achieve what you wanted.
Related Topics
How to Remove the Authorization Prompt from Command-Line Instances of Instruments (Xcode)
How to Split String into Substrings on iOS
Didupdatelocations Instead of Didupdatetolocation
Where and When to Get Data for Watch Complication
What Is a Monospace Font in iOS
Found an Unexpected MACh-O Header Code: 1918975009 in Xcode 6
Can't Cast Value of Type Uiviewcontroller to Patterndetailviewcontroller
How to Get the iOS Device CPU Architecture in Runtime
Xcode 6 Upload App with Error: Itunes Store Operation Failed Error Description Not Available
Running Xcodebuild from a Forked Terminal
Atos and Dwarfdump Won't Symbolicate My Address
Fatal Error: Init(Coder:) Has Not Been Implemented Error Despite Being Implemented
Show Current Location and Update Location in Mkmapview in Swift
Uitableviewrowaction Image for Title
Loading Viewcontroller from Xib File
How to Get Directions in Mkmapview Using a Built in Apple API
Memory Leak Every Time Uiscrollview Is Released
How to Detect That the App Is Running on a Jailbroken Device