How to add padding-left on a UIButton created programmatically? How to add padding-left on a UIButton created programmatically? xcode xcode

How to add padding-left on a UIButton created programmatically?


titleEdgeInsets The inset or outset margins for the edges of the button title drawing rectangle.

@property(nonatomic) UIEdgeInsets titleEdgeInsets

Discussion Use this property to resize and reposition the effective drawing rectangle for the button title. You can specify a different value for each of the four insets (top, left, bottom, right). A positive value shrinks, or insets, that edge—moving it closer to the center of the button. A negative value expands, or outsets, that edge. Use the UIEdgeInsetsMake function to construct a value for this property. The default value is UIEdgeInsetsZero.

Availability Available in iOS 2.0 and later.

Declared In UIButton.h

Give this a try :)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];

Also if you're using a custom button there is such a thing as Content Insets and Image Insets.

Incase you've made it here looking for Swift. This is valid Swift 3.0 😃

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)

You can set it directly as well. It is helpful if want to use one or two properties.

myButton.titleEdgeInsets.top = 0myButton.titleEdgeInsets.left = 5myButton.titleEdgeInsets.bottom = 0myButton.titleEdgeInsets.right = 0


Post Xcode 8 if you want to set it these insets through interface builder (IB),you will find these inset settings in size inspector instead of attribute inspector.

Hope this helps.

enter image description here


Here is a better answer to:

  • avoid truncating the button title
  • avoid title from extending beyondthe button's view
  • make the button frame work well with an image.

Code:

extension UIButton {    func addLeftPadding(_ padding: CGFloat) {        titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)        contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)    }}

Usage:

myButton.addLeftPadding(10)