Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 更改UIButton';在Swift中以编程方式设置文本(填充)_Ios_Iphone_Swift_Uibutton - Fatal编程技术网

Ios 更改UIButton';在Swift中以编程方式设置文本(填充)

Ios 更改UIButton';在Swift中以编程方式设置文本(填充),ios,iphone,swift,uibutton,Ios,Iphone,Swift,Uibutton,仍在学习Swift,不知道Objective-C。我看到,为了以编程方式更改按钮的文本,需要使用titleEdgeInsets,但我不确定如何使用它 我想更改底部和左右两侧按钮(填充)中的文本 感谢您的回复和/或示例 通过执行以下代码行,可以从顶部、左侧、右侧和底部添加填充 button.titleEdgeInsets.left = 10; // add left padding. button.titleEdgeInsets.right = 10; // add right padding.

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

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


感谢您的回复和/或示例

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

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) 

对于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()
}

iOS 10和Swift 3示例

在IOS 11和Swift 4上测试并运行

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 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()

“以编程方式”指定的问题我并不假装是最佳答案。这很有用,@aeid有时我会“以编程方式”搜索,因为我在故事板中找不到它。我没有以编程方式或故事板搜索,因为我不在乎任何一种方式。很高兴知道它在那里如果文本正在截断,而使用
titleEdgeInsets
,则将其替换为
contentEdgeInsets
@Nik Kov,谢谢。新方法名为:UIEdgeInsets.init(顶部:#,左侧:#,底部:#,右侧:#))@Andrea,UIEdgeInsetsMake()仍在文档中:@Andrea,如果调用
UIEdgeInsetsMake,您会收到警告吗(5,5,5,5)
?这不太正确。调整标题栏非常困难。您必须遵循类似以下步骤: