使用IB在UIButton上居中多行文本

时间:2012-01-27 14:58:35

标签: iphone ios interface-builder multiline

如何使用Interface Builder在UIButton中逐行中心文本?我正在搜索选项,只是没有看到它。这是按钮:

button with text not centered

7 个答案:

答案 0 :(得分:52)

您无法将文本设置为在笔尖中居中。但您可以更改代码中的对齐方式:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.myButton.titleLabel.textAlignment = UITextAlignmentCenter;
}

答案 1 :(得分:13)

我知道这是一个古老的问题,但我在尝试将IB中的UIButton的多行文本居中时遇到了它。我发现默认情况下,当“title”设置为“plain”并且“line break”设置为“自动换行”时,标题文本的最长行居中,其他行左对齐此行(类似于OP的屏幕截图)。

为了让所有线条都正确居中,需要将“标题”更改为“归属”。这提供了更多选项来自定义标题文本的外观。将每行文本居中(现在您可以实际更改每行的对齐方式)。另外一定要在文本上方的“more ...”下面设置“换行符”到“自动换行”。这个换行选项的行为似乎存在一个错误,至少在Xcode 4.5中是这样,因为IB中按钮上的文本看起来不正确,截断除第一行以外的所有内容。似乎“自动换行”和截断选项在IB中向后解释,但如果运行应用程序,它在模拟器中的行为正确。

答案 2 :(得分:9)

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

只需将标题设置为"归属"然后选择中心对齐。

答案 3 :(得分:8)

您可以通过情节提要在UIButton中设置中心多行文字。

这就是你如何使文字有两行或更多行。

处设置以下键路径

身份检查员 - >用户定义的运行时属性 - >在下面添加新的键值对

titleLabel.textAlignment - NSNumber - 1

 titleLabel.numberOfLines - NSNumber - 5 - or use "0" meaning "any number"

看起来像这样:

enter image description here

请注意,(2016)遗憾的是,它实际上并没有在Storyboard中显示两行或更多行文本(您只看到第一行),但是当您在模拟器或设备中运行时,它可以正常工作。

答案 4 :(得分:2)

并非所有选项都是使用Interface Builder完成的,因此您必须通过编码来完成其中一些选项,通常我们会在函数viewDidLoad内完成这些选项。

要通过代码将文本置于按钮中心,您可以使用以下内容:

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

您可以使用相同的技巧将文本与任何方向对齐,例如向左:

button1.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

但是这会使文本向左偏移太多而你可能想要在保持左对齐之前有一些空格,所以你在对齐代码之后添加一个插图如下:

button1.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

在这种情况下,我们将文本从Y轴推出10个点。我在这里指的不是像素,因为你知道Apple使用点技术来测量距离,以便能够在正常显示和视网膜显示之间轻松适应(视网膜是正常显示的2倍)。

答案 5 :(得分:2)

IB 将标题设置为"归属"并选择中心对齐(如Alexander Danilov suggested

但如果您想使用 Swift 4

在代码中执行此操作
dplyr

答案 6 :(得分:-2)

我还没有尝试过,但我认为一种方法可能是在你的按钮上创建一个CGRect,然后用它作为一个框架,创建一个标签,然后你可以玩标签,将textAlignment属性设置为UITextAlignmentCenter,并将背景颜色设置为清除。

这适用于uitableview,但我不知道这是否适用于按钮。希望这会有所帮助。