iOS UIButton с UITextAlignmentLeft по-прежнему центрирует текст? - PullRequest
29 голосов
/ 17 февраля 2012

Проблема:
После установки кнопок titleEdgeInset и UITextAlignmentLeft заголовок кнопки по-прежнему центрируется, а не по левому краю.

подробности:
У меня есть кнопка шириной 200px, использующая пользовательский фон с изображением слева. Поскольку я не хочу, чтобы заголовок кнопки покрывал изображение, я вставляю заголовок, используя titleEdgeInset=UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);. Это должно привести к тому, что позиция заголовка x начинается с 45px и заканчивается на 200px. Я также хочу, чтобы заголовок кнопки был выровнен по левому краю изображения, поэтому я также установил textAlignment = UITextAlignmentLeft. Однако текст заголовка по-прежнему находится в центре от 45 до 200 пикселей и не выровнен по левому краю.

Почему?

Вот соответствующий код:

button.titleEdgeInsets = UIEdgeInsetsMake(0.0, 45.0, 0.0, 0.0);
button.titleLabel.textAlignment = UITextAlignmentLeft;
[button setTitle:@"X"];

Ответы [ 6 ]

80 голосов
/ 17 февраля 2012

Мой тестовый код:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(20, 20, 200, 72);
UIImage *image = [UIImage imageNamed:@"rob.png"];
[button setImage:image forState:UIControlStateNormal];
button.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[button setTitle:@"Hello" forState:UIControlStateNormal];
button.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[self.view addSubview:button];

Обратите внимание, что я установил button.contentHorizontalAlignment, а не button.titleLabel.textAlignment. Мой результат:

Screen shot of label

22 голосов
/ 07 октября 2013

установить свойство contentHorizontAlignment для кнопки, оно будет работать.

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Swift 4.0

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.center
4 голосов
/ 17 февраля 2012

Поместите цвет фона на заголовок.Могу поспорить, что он подходит по размеру, поэтому выравнивание текста не имеет значения.Это только столько, сколько нужно.Что вам нужно исправить, так это положение самой этикетки.Возможно, вам придется расширить UIButton и переопределить layoutSubviews, чтобы сделать это правильно.Я никогда не видел кнопки с чем-либо, кроме ярлыка по центру.

2 голосов
/ 27 января 2015

Установить свойство contentHor horizontalAlignment для кнопки:

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
1 голос
/ 30 ноября 2017

Swift 3

Установить свойство contentHor horizontalAlignment для выполнения работы.Спасибо

yourButton.contentHorizontalAlignment = .left
0 голосов
/ 14 августа 2017

Просто переопределите установщик кнопки и попробуйте установить свойство contentHorizontAlignment в установщике:

-(UIButton *)yourButton {
      [_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];

    return _yourButton;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...