在Swift中以编程方式更改UIButton的文本(填充)

时间:2015-07-11 04:09:33

标签: ios iphone swift uibutton

仍在学习Swift,并且不了解Objective-C。我看到为了以编程方式更改按钮的文本,需要使用titleEdgeInsets,但我不确定如何使用它。

我想更改底部和左右两侧按钮(填充)中的文字。

感谢您的回复和/或示例!

6 个答案:

答案 0 :(得分:100)

仍然有效: iOS 12/Xcode 10/Swift 4.2/OSX 10.13.2

iOS 9.1/Xcode 7.1/Swift 2.1/OSX 10.10.5

方法titleEdgeInsets对我不起作用。我的按钮的框架紧紧地拥抱文本(我没有指定框架大小),并且框架具有红色背景颜色。做完之后:

 myButton.titleEdgeInsets = UIEdgeInsetsMake(10,10,10,10)

红色背景向内缩小了10像素,这意味着现在一些文本在红色背景之外。使用负值对原始帧大小没有影响。

我能够在文本周围填充,通过执行以下操作有效地使框架更大:

myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) 

答案 1 :(得分:45)

iOS 10和Swift 3示例

在IOS 11和Swift 4上测试并使用。

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)

答案 2 :(得分:25)

您可以通过执行以下代码行来从顶部,左侧,右侧和底部添加填充。

button.titleEdgeInsets.left = 10; // add left padding.
button.titleEdgeInsets.right = 10; // add right padding.
button.titleEdgeInsets.top = 10; // add top padding.
button.titleEdgeInsets.bottom = 10; // add bottom padding.

答案 3 :(得分:15)

您也可以在故事板中执行此操作:
enter image description here

答案 4 :(得分:3)

适用于iOS 9.1 / Xcode 7.1 / Swift 2.1

@IBOutlet weak var ratingButton: UIButton!

override func viewDidLoad() {
    ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)

    super.viewDidLoad()
}

答案 5 :(得分:0)

或者如果您不想在每次创建按钮时都定义属性,则可以使用自定义类;

class UIPaddedButton: UIButton {
  let padding = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)

  required init?(coder: NSCoder) {
    super.init(coder: coder)
  }

  override init(frame: CGRect) {
    super.init(frame: frame)
  }

  override func titleRect(forContentRect contentRect: CGRect) -> CGRect {
    return contentRect.inset(by: padding)
  }
}

初始化时;

let btn = UIPaddedButton()