How to center an image inside an UIButton without stretching in both direction in Swift?
Solution 1
Finally a solution came through. You must set the content mode for the image inside the UIButton.
The solution is to update the contentMode
of the Image
when you are using a foreground image inside a button along with the contentMode
of the UIButton
.
shiftButton.contentMode = .Center
shiftButton.imageView?.contentMode = .ScaleAspectFit
Solution 2
If you're using storyboard, double-check that you don't have anything set for the button title.
Solution 3
- Add User Defined Runtime Attributes to your button.
In the screen shot below value 1 is equal to scaleAspectFit
imageView.ContentMode = scaleAspectFit
Solution 4
I was able to center the image by setting the content insets to 0 using the size inspector on the storyboard:
Solution 5
Set the button's content mode to Center
:
shiftButton.contentMode = .Center
Ariel
Nickname: Ariel Status: Single BY DAY: I write code, play games, go for a walk and eat all the yummy food. BY NIGHT: I sleep like a KiD. FOR FUN: I write code, play games and go for a walk. FOR WORK: I work as a Flutter Developer at Peuconomia Int'l Pvt. Ltd.
Updated on August 01, 2021Comments
-
Ariel almost 3 years
I am making a custom keyboard and I need to centre the image of the shift icon inside the shift button. The image is 100px x 100px.
However, the button frame in portrait is
36pt x 38pt
, and in landscape, it is68pt x 32pt
. I have tried using button image inset property to centre the image. However, it does not does so.I tried myself and set the image edge insets to
(25,25,25,25)
, the image centres in both sizes. However, the icon becomes too small to see.shiftButton.setImage(UIImage(named: "shift"), forState: .Normal) shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0)
I am making the button programatically. And, I need the button to scale maintaining its aspect ratio i.e.
1:1
. Its maximum width or height is always tied to the button's height itself. The image width/height should be maximum of button's height. And, it should not stretch in any way to distort the icon. However, the button itself can stretch.I need the image to scale according to button frame but maintain its aspect ratio. And, it can down scale or up scale, but should always maintain the 1:1 aspect ratio.
Any suggestions for solving this problem?