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

问题描述 投票:129回答:15

我不能使用IB作为中心来设置UIButton的标题。我的标题是多行的。 它是这样的

但我想要这个

我已经给了空间,但我不想这样做。由于它没有完全对齐某些情况,我知道UILabel有一个属性来设置对齐但我不想为此编写代码...只想从IB设置所有内容。

谢谢

ios objective-c uibutton interface-builder
15个回答
177
投票

这将完全符合您的期望:

Objective-C的:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

适用于iOS 6或更高版本

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

正如tyler53's answer所解释的那样

迅速:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

3
投票

实际上你可以在界面构建器中完成它。

您应将Title设置为“Attributed”,然后选择center alignment。


3
投票

对于Swift 3.0

btn.titleLabel?.textAlignment = .center

2
投票

试试这样:

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

1
投票

UIButton不支持setTextAlignment。因此,您需要使用setContentHorizo​​ntalAlignment进行按钮文本对齐

供你参考

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

1
投票

您可以从故事板中执行此操作。选择你的按钮。设置换行'Word Wrap',将标题'Plain'设置为'Attributed'。选择“中心对齐”。这部分很重要=>点击......(更多)按钮。并选择换行模式为'Character Wrap'。


1
投票

对于Swift 4:

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

102
投票

使用该行:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

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

如果您想将标签内的文本设置为中心,请使用:

[labelOne setTextAlignment:UITextAlignmentCenter];

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


79
投票

解决方法1

您可以在故事板中设置密钥路径

将文字设置为多行标题,例如hello⌥+↵multiline

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

enter image description here

然后添加密钥路径

titleLabel.textAlignment作为Number和值11意味着NSTextAlignmentCenter titleLabel.numberOfLines作为Number和值00意味着任意数量的行

enter image description here

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

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

  1. 对UIButton进行子类化以使按钮可设计: import UIKit @IBDesignable class UIDesignableButton: UIButton {}
  2. 将此可设计子类分配给您正在修改的按钮:

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

  1. Iff做得对,当Designables状态为“最新”(可能需要几秒钟)时,您将看到IB中的视觉更新:

Comparing the designable and default button in Interface Builder


溶液2

如果要编写代码,请执行漫长的过程

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

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

Solution3

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

附:由于我必须设置,所以文本不是多行的

btn.titleLabel.numberOfLines = 0


26
投票

对于UIButton你应该使用: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

16
投票

对于ios 8和Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

要么

btn.titleLabel.textAlignment = .Center


12
投票

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

示例:mylabel.textAlignment = NSTextAlignmentCenter;完美无缺。


9
投票

对于swift 4,xcode 9

myButton.contentHorizontalAlignment = .center

7
投票

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

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

4
投票

UITextAlignmentCenter在iOS6中已弃用

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

btn.titleLabel.textAlignment=NSTextAlinmentCenter;

© www.soinside.com 2019 - 2024. All rights reserved.