如何使 UIButton 的文本对齐中心? 使用 IB

我不能设置的标题 UIButton 使用 IB 为中心。我的头衔是多行。它就是这样给予的enter image description here

但是我想要这样一个 < br > < img src = “ https://i.stack.imgur.com/iSmeP.png”alt = “ enter image description here”>

我已经给了空间,但我不想这样做。因为它在某些情况下不能精确对齐,我知道 UILabel 有一个属性来设置对齐,但我不想为此编写代码。.只是想从 IB 设置一切。

谢谢

135679 次浏览

用这句话:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

这应该使内容(水平)居中。

如果你也想把标签里的文字设置为中心,可以使用:

[labelOne setTextAlignment:UITextAlignmentCenter];

如果您想使用 IB,我在这里有一个小示例,它在 XCode 4中链接,但是应该提供足够的细节(另外要注意的是,在属性屏幕的顶部显示了属性选项卡。您可以在 XCode 3.x 中找到相同的选项卡) : enter image description here

解决方案1

您可以在故事板中设置关键路径

将文本设置为多行标题,例如 hello + multiline

您需要按 + 将文本移动到下一行。

enter image description here

然后添加键路径

titleLabel.textAlignmentNumber,值为 11表示 NSTextAlignmentCenter
titleLabel.numberOfLinesNumber,值为 00表示任意数量的行

enter image description here

这将不会反映在 IB/Xcode 上,而是在运行时(设备/模拟器)处于中心位置

如果您想看到 Xcode 上的更改,您需要执行以下操作: (记住您可以跳过这些步骤)

  1. 子类化 UIButton 以使按钮可设计:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    

  2. Assign this designable subclass to the buttons you're modifying:

Showing how to change the class of the button using Interface Builder

  1. Iff done right, you will see the visual update in IB when the Designables state is "Up to date" (which can take several seconds):

Comparing the designable and default button in Interface Builder



Solution2

If you want to write the code, then do the long process

1.Create IBOutlet for button
2.Write code in viewDidLoad

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0


解决方案3

在新版本的 xcode (我的是 xcode 6.1)中,我们有属性属性的 title
选择 Attributed,然后选择下面的文本和按中心选项

文本不是多行的,因为我必须设置

btn.titleLabel.numberOfLines = 0

enter image description here

这正是你所期待的:

目标 C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

对于 iOS6或更高版本

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

正如 Tyler 53的回答中所解释的

斯威夫特:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x 及以上版本

myButton.titleLabel?.textAlignment = .center

对于 UIButton,您应该使用:-

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

对于那些正在使用 iOS6或更高版本的用户,UITextAlignmentCenter 已被弃用。现在是 NSTextAlignmentCenter

mylabel.textAlignment = NSTextAlignmentCenter;运行良好。

在 iOS6中不推荐使用 UITextAlignmentCenter

相反,您可以使用以下代码:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;

假设 btn 指的是一个 UIButton,要将多行标题水平居中,可以在 iOS6或更高版本中使用以下语句:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

Ios 8和 Swift

TextAlign = NSTextAlign. Center

或者

TextAlign = . Center

事实上,你在 Interface Builder做它。

您应该将 书名设置为 "Attributed",然后选择中心对齐。

UIButton 不支持 setTextAlign。所以您需要使用 setContentHorizontalAlign 来对齐按钮文本

供你参考

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

试试这样:

yourButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

为了 Swift 3.0

btn.titleLabel?.textAlignment = .center

迅捷4号,代码9

myButton.contentHorizontalAlignment = .center

你可以从故事板做到这一点。 选择您的按钮。设置行分割’字包装’,设置您的标题’平原’到’属性’。 选择“中心对齐”。这部分很重要 = > 点击... (更多)按钮。然后选择断行模式到“字符包装”。

对于斯威夫特4:

@IBAction func myButton(sender: AnyObject) {
sender.titleLabel?.textAlignment = NSTextAlignment.center
sender.setTitle("Some centered String", for:UIControlState.normal)
}