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


139

我不能以IB为中心设置UIButton的标题。我的标题是多行。
像这样给
在此处输入图片说明

但是我想要这样
在此处输入图片说明

我已经在其中留出了空间,但我不想这样做。因为在某些情况下它不是完全对齐的,并且我知道有UILabel的属性可以设置对齐方式,但是我不想为此编写代码..只是想从IB设置所有内容。

谢谢


7
库玛·拉索尔(Kumar Rathor)-通过代码尝试self.yourButton.titleLabel.textAlignment = UITextAlignmentCenter;
Sagar R. Kothari 2013年

1
@Spark我知道如何通过代码执行此操作,但是我想要使用“ IB”进行设置。
Inder Kumar Rathore

我知道,您想使用IB进行设置。但是此类属性只能通过代码访问。
Sagar R. Kothari

通过将其归因于IB可以访问它,但谁在乎呢!
Youssef Moawad 2015年

@YoussefSami是的,你是对的stackoverflow.com/a/5865500/468724
Inder Kumar Rathore

Answers:


197

这将完全符合您的期望:

目标C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

对于iOS 6或更高版本

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

tyler53的答案所述

迅速:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Swift 4.x及更高版本

myButton.titleLabel?.textAlignment = .center

1
在更高版本的iOS中,它已成为NSTextAlignment。
沙利文2015年

4
thas代码不起作用,最好的答案是@joetjahmyButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Alberto Mier

8
该问题明确提到了IB,如Interface Builder中一样。这不是正确的答案,因为它需要编码。
SwiftArchitect

1
斯威夫特4: myButton.titleLabel?.textAlignment = .center
刘易斯·布莱克

“中心”已重命名为“中心”
ModusPwnens

106

使用该行:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

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

而且,如果要将标签内的文本也设置为居中,请使用:

[labelOne setTextAlignment:UITextAlignmentCenter];

如果您想使用IB,我在这里有一个小示例,该示例链接到XCode 4中,但应提供足够的详细信息(同样请注意,在该属性屏幕的顶部,它显示了属性选项卡。您可以在XCode中找到相同的选项卡3.x): 在此处输入图片说明


1
谢谢...但是我不想通过IB进行设置。:(这是我这样做的最后选择...
Inder Kumar Rathore

1
@Inder Kumar Rathore:没问题。要在IB中进行设置,应单击标签,然后在“属性”检查器中将“对齐”设置为“居中”。在我的IB(XCode 4)中,它具有3个图标,用于显示文本的对齐方式。显然,您应该选择中间一个。
Joetjah 2011年

可以将屏幕截图发送给我吗?这是Button的标签吗?还是您从库中拖出了UILabel?我认为UILabel不是按钮的标签
Inder Kumar Rathore

@Inder Kumar Rathore:嘿,请查看我添加的屏幕截图。我确实误会了您使用的标签类型,我仍然在考虑UILabel,而不是UIButton中的文本。屏幕截图显示了如何通过IB在UIButton上对齐。
Joetjah 2011年

1
不允许我编辑,但是NSTextAlignmentCenter代替了UITextAlignmentCenter。它们的含义完全相同。 developer.apple.com/library/iOS/documentation/UIKit/Reference/...
OC里卡德

89

解决方案1

您可以在情节提要中设置关键路径

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

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

在此处输入图片说明

然后添加密钥路径

titleLabel.textAlignmentas Number和value 11表示NSTextAlignmentCenter
titleLabel.numberOfLinesas Number和value 00表示任意数量的行

在此处输入图片说明

这不会反映在IB / Xcode上,但会在运行时居中显示(设备/模拟器)

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

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

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}

  2. 将此可设计的子类分配给您要修改的按钮:

显示如何使用Interface Builder更改按钮的类

  1. 如果操作正确,当Designables状态为“最新”(可能需要几秒钟)时,您将在IB中看到视觉更新:

比较Interface Builder中的可设计按钮和默认按钮



解决方案2

如果要编写代码,则需要很长时间

1.创建IBOutlet按钮2.
在viewDidLoad中编写代码

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


解决方案3

在Xcode的更新版本(我的是Xcode的6.1),我们有产权归属标题
选择Attributed,然后选择下方的文字和新闻中心的选择

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

btn.titleLabel.numberOfLines = 0

在此处输入图片说明


对于解决方案3,您只需添加Line Breaking = Clip,它将文本转换为多行
finx

解决方案3至少在Xcode 11.3.1中存在问题:当我更改按钮标题时,它不起作用。当我使用时btn.titleLabel.textAlignment,效果很好。
Brian Hong

27

对于UIButton,您应该使用:-

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];


13

对于现在使用iOS 6或更高版本的用户,不推荐使用UITextAlignmentCenter。现在是NSTextAlignmentCenter

示例:mylabel.textAlignment = NSTextAlignmentCenter;完美运行。


11

对于Swift 4,xcode 9

myButton.contentHorizontalAlignment = .center

我将myButton.titleLabel?.numberOfLines = 0设置为0,这会使按钮内的标签居中,因此我试图弄清楚如何使按钮内的文本向左对齐,这确实可行,但是将其设置为.left。
maxcodes

7

假设btn引用UIButton,要将多行标题更改为水平居中,可以在iOS 6或更高版本中使用以下语句:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4

UITextAlignmentCenter 在iOS6中已弃用

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

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


没有UIButton被调用方textAlignment的属性。
拉维

iOS中的UIButton没有这样的属性
Jayprakash Dubey

他的意思是button.titleLabel.textAlignment
OC Rickard


4

对于Swift 4:

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

用一个“?” 在sender.titleLabel中?改为“ ??”
ВладимирКовальчук


3

像这样尝试:

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

2

您可以从情节提要中执行此操作。选择您的按钮。将换行符设置为“自动换行”,将标题“普通”设置为“已归因”。选择“居中对齐”。这部分很重要=>单击...(更多)按钮。并将换行模式选择为“字符换行”。


1

UIButton将不支持setTextAlignment。因此,您需要使用setContentHorizo​​ntalAlignment来实现按钮文本对齐

供你参考

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.