Как сделать центр выравнивания текста UIButton? Через ИБ

Я не могу установить название UIButton, используя IB в качестве центра. Мое название-multi line.
это дает, как этот
enter image description here

но я хочу, как этот
enter image description here

Я дал место в этом, но я не хочу этого делать. Поскольку он не выровнен точно для некоторых случаев, и я знаю, что есть свойство UILabel для установки выравнивания, но я не хочу писать код для этого.. просто хочу установить все из IB.

спасибо

15 ответов


это сделает именно то, что вы ожидали:

Цель-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

для iOS 6 или выше, это

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

как поясняется в tyler53 это

Свифт:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

используйте строку:

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

это должно центрировать содержимое (по горизонтали).

и если вы хотите также установить текст внутри метки в центр, используйте:

[labelOne setTextAlignment:UITextAlignmentCenter];

Если вы хотите использовать IB, у меня есть небольшой пример здесь, который связан в XCode 4, но должен предоставить достаточно подробную информацию (также имейте в виду, что поверх этого экрана свойств он показывает вкладку свойств. Вы можете найти те же вкладки в XCode 3.икс): enter image description here


Решение 1

вы можете установить ключевой путь в раскадровке

установите текст в многострочный заголовок, например hello + multiline

нужно нажать + перенести текст на следующую строку.

enter image description here

затем добавьте ключевой путь

titleLabel.textAlignment as Number и значение 1, 1 означает NSTextAlignmentCenter
titleLabel.numberOfLines as Number и значение 0, 0 означает любое количество строк

enter image description here

это не будет отражено на IB/Xcode, но будет в центре во время выполнения (устройство / симулятор)

если вы хотите увидеть изменения в Xcode, вам нужно сделать следующее: (помните, что вы можете пропустить эти шаги)

  1. подкласс UIButton, чтобы сделать кнопку designable:

    import UIKit
    @IBDesignable class UIDesignableButton: UIButton {}
    
  2. назначьте этот обозначаемый подкласс кнопкам, которые вы изменяете:

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

  1. Iff сделано правильно, вы увидите визуальное обновление В IB, когда состояние Designables "Обновлено" (что может занять несколько секунды):

Comparing the designable and default button in Interface Builder



Solution2

если вы хотите написать код, затем сделайте длительный процесс

1.Create IBOutlet кнопки
2.Напишите код в viewDidLoad

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


Solution3

в более новой версии xcode (мой xcode 6.1) у нас есть свойство, приписываемое название
Выберите Attributed затем выберите текст и нажмите кнопку центр ниже

П. С. текст не приходил многострочный, для этого я должен установить

btn.titleLabel.numberOfLines = 0

enter image description here


для UIButton вы должны использовать:-

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

для ios 8 и Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

или

btn.titleLabel.textAlignment = .Center


для тех из вас, кто теперь использует iOS 6 или выше, uitextalignmentcenter устарел. Теперь это NSTextAlignmentCenter

пример: mylabel.textAlignment = NSTextAlignmentCenter; отлично работает.


предполагая, что btn относится к UIButton, чтобы изменить многострочный заголовок по горизонтали, вы можете использовать следующий оператор в iOS 6 или более поздней версии:

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

для swift 4, xcode 9

myButton.contentHorizontalAlignment = .center

UITextAlignmentCenter устарел в iOS6

вы можете использовать этот код:

btn.titleLabel.textAlignment=NSTextAlinmentCenter;


на самом деле вы можете сделать это в interface builder.

вы должны установить заголовок в "Attributed", а затем выбрать выравнивание по центру.


попробуйте так :

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

UIButton не будет поддерживать setTextAlignment. Таким образом, вам нужно пойти с setcontenthorizontalignment для выравнивания текста кнопки

Для справки

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

Для Swift 3.0

btn.titleLabel?.textAlignment = .center

вы можете сделать это в раскадровке. Выберите кнопку. Набор строки 'перенос слов', обычного ваше звание '' к 'списать'. Выберите "выравнивание по центру". Эта часть важна = > нажмите ...(Еще) Кнопка. И выберите режим разрыва строки для "обертывания символов".


Для Swift 4:

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