it-swarm.com.ru

iOS UIButton с UITextAlignmentLeft по-прежнему центрирует текст?

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

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

Зачем?

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

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

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

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

80
rob mayoff

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

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Swift 4.0

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.center
22
Vineesh TP

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

4
ZaBlanc

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

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
2
Evana

Swift 3

Установить свойство contentHorizontAlignment сделать работу. Спасибо

yourButton.contentHorizontalAlignment = .left
1
Riajur Rahman

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

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

    return _yourButton;
}
0
Mostafa Elbutch