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

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

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

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

Спасибо

Ответ 1

Solution1

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

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

Вам нужно нажать + , чтобы переместить текст в следующую строку.

введите описание изображения здесь

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

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

введите описание изображения здесь

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

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

  • Подкласс UIButton, чтобы сделать кнопку условной:

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

Показывает, как изменить класс кнопки с помощью Interface Builder

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

Сравнение условной и стандартной кнопки в Interface Builder



Solution2

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

1.Создайте IBOutlet для кнопки
2.Видите код в viewDidLoad

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


Solution3

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

P.S. Текст не шел многострочным, потому что я должен установить

btn.titleLabel.numberOfLines = 0

enter image description here

Ответ 2

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

Objective-C:

 [myButton.titleLabel setTextAlignment:UITextAlignmentCenter];

Для iOS 6 или выше

 [myButton.titleLabel setTextAlignment: NSTextAlignmentCenter];

как описано в tyler53 answer

Swift:

myButton.titleLabel?.textAlignment = NSTextAlignment.Center

Ответ 3

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

myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;

Это должно центрировать контент (по горизонтали).

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

[labelOne setTextAlignment:UITextAlignmentCenter];

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

Ответ 4

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

[btn setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

Ответ 5

Для ios 8 и Swift

btn.titleLabel.textAlignment = NSTextAlignment.Center

или

btn.titleLabel.textAlignment = .Center

Ответ 6

Для тех из вас, кто сейчас использует iOS 6 или выше, UITextAlignmentCenter устарел. Теперь NSTextAlignmentCenter

ПРИМЕР: mylabel.textAlignment = NSTextAlignmentCenter; Работает отлично.

Ответ 7

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

self.btn.titleLabel.textAlignment = NSTextAlignmentCenter;

Ответ 8

UITextAlignmentCenter устарел в iOS6

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

btn.titleLabel.textAlignment=NSTextAlinmentCenter;

Ответ 9

На самом деле вы можете сделать это в построителе интерфейса.

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

Ответ 10

UIButton не поддерживает setTextAlignment. Поэтому вам нужно пойти с setContentHorizontalAlignment для выравнивания текста кнопки

Для справки

[buttonName setContentHorizontalAlignment:UIControlContentHorizontalAlignmentCenter];

Ответ 11

Попробуйте:

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

Ответ 12

Для Swift 3.0

btn.titleLabel?.textAlignment = .center

Ответ 13

Для быстрого 4, xcode 9

myButton.contentHorizontalAlignment = .center