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

Ind*_*ore 133 objective-c interface-builder uibutton ios

我不能使用IB作为中心来设置UIButton的标题.我的标题是多行的.
它是这样的
在此输入图像描述

但我想要这个
在此输入图像描述

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

谢谢

RGM*_*GML 186

这将完全符合您的期望:

Objective-C的:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];
Run Code Online (Sandbox Code Playgroud)

适用于iOS 6或更高版本

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];
Run Code Online (Sandbox Code Playgroud)

正如tyler53的回答所解释的那样

迅速:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center
Run Code Online (Sandbox Code Playgroud)

  • 问题明确提到**IB**,如**Interface Builder**.这不是正确的答案,因为它需要编码. (7认同)
  • 那些代码不起作用,最好的答案是@joetjah`myButton.contentHorizo​​ntalAlignment = UIControlContentHorizo​​ntalAlignmentCenter;` (3认同)

Joe*_*jah 104

使用该行:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
Run Code Online (Sandbox Code Playgroud)

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

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

[labelOne setTextAlignment:UITextAlignmentCenter];

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


Ind*_*ore 84

解决方法1

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

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

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

在此输入图像描述

然后添加密钥路径

titleLabel.textAlignmentas Number和value 1,1表示NSTextAlignmentCenter
titleLabel.numberOfLinesas Number和value 0,0表示任意数量的行

在此输入图像描述

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

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

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

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    

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

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

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

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



溶液2

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

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

btn.titleLabel.textAlignment = .Center
btn.titleLabel.numberOfLines = 0
Run Code Online (Sandbox Code Playgroud)


Solution3

在较新版本的xcode(我的是xcode 6.1)中我们有属性属性标题
选择Attributed然后选择文本并按下中心选项

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

btn.titleLabel.numberOfLines = 0

在此输入图像描述


小智 26

对于UIButton你应该使用: -

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];
Run Code Online (Sandbox Code Playgroud)


Edu*_*ezi 16

对于ios 8和Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

要么

btn.titleLabel.textAlignment = .Center

  • btn.titleLabel.textAlignment = .Center也可以 (2认同)

tyl*_*r53 12

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

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


Sha*_* Ye 10

对于swift 4,xcode 9

myButton.contentHorizontalAlignment = .center
Run Code Online (Sandbox Code Playgroud)


use*_*723 7

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

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;
Run Code Online (Sandbox Code Playgroud)


Grz*_*sza 6

对于 Swift 4:

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