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

Kel*_*p23 41 iphone uibutton ios swift

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

我想更改底部按钮(填充)中的文本以及左侧和右侧的文本.

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

7st*_*tud 115

仍然有效: 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)
Run Code Online (Sandbox Code Playgroud)

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

通过这样做,我能够在文本周围填充,有效地使框架变大:

myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) 
Run Code Online (Sandbox Code Playgroud)

  • `titleEdgeInsets` 在 iOS 15 中已弃用:( (5认同)
  • 调用新方法: UIEdgeInsets.init(top: #, left:#, :bottom: #, right: #) (2认同)
  • @Andrea,如果你调用`UIEdgeInsetsMake(5,5,5,5)`,你会收到警告吗? (2认同)

Dev*_*hts 50

iOS 10和Swift 3示例

测试并适用于IOS 11和Swift 4.

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
Run Code Online (Sandbox Code Playgroud)

  • 如果文本被截断,则在使用`titleEdgeInsets`时,将其替换为`contentEdgeInsets`。 (3认同)

Ali*_*aza 26

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

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.
Run Code Online (Sandbox Code Playgroud)


Nik*_*Kov 16

您也可以在故事板中执行此操作:
在此输入图像描述

  • 我不假装是最佳答案。只是为了信息的完整性。 (6认同)
  • 这很有用,@ aeid有时我会"以编程方式"搜索,因为我无法在故事板中找到它 (5认同)
  • “以编程方式”指定的问题 (2认同)

Han*_*nes 6

适用于 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()
}
Run Code Online (Sandbox Code Playgroud)