在 Swift 中以编程方式更改 UIButton 的文本(填充)
Change a UIButton's text (padding) programmatically in Swift
还在学习Swift,不知道Objective-C。我看到为了以编程方式更改按钮的文本需要使用 titleEdgeInsets
但我不确定如何使用它。
我想更改底部和左右按钮(填充)中的文本。
感谢您的任何回复and/or 示例!
您可以通过执行这些代码行从顶部、左侧、右侧和底部添加填充。
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.
仍然适用于:
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)
对于iOS9.1/Xcode7.1/Swift2.1
@IBOutlet weak var ratingButton: UIButton!
override func viewDidLoad() {
ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)
super.viewDidLoad()
}
iOS 10 和 Swift 3 示例
测试并适用于 IOS 11 和 Swift 4。
refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
您也可以在故事板中执行此操作:
或者如果您不想在每次创建按钮时都定义属性,您可以使用自定义 class;
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()
还在学习Swift,不知道Objective-C。我看到为了以编程方式更改按钮的文本需要使用 titleEdgeInsets
但我不确定如何使用它。
我想更改底部和左右按钮(填充)中的文本。
感谢您的任何回复and/or 示例!
您可以通过执行这些代码行从顶部、左侧、右侧和底部添加填充。
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.
仍然适用于:
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)
对于iOS9.1/Xcode7.1/Swift2.1
@IBOutlet weak var ratingButton: UIButton!
override func viewDidLoad() {
ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)
super.viewDidLoad()
}
iOS 10 和 Swift 3 示例
测试并适用于 IOS 11 和 Swift 4。
refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
您也可以在故事板中执行此操作:
或者如果您不想在每次创建按钮时都定义属性,您可以使用自定义 class;
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()