Подтвердить что ты не робот

IOS UIButton с UITextAlignmentLeft все еще центрирующим текстом?

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

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

Почему?

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

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

Ответ 1

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

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

Ответ 2

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

YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Ответ 3

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

Ответ 4

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

yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Ответ 5

Swift 3

Установить свойство contentHorizontalAlignment выполнить работу. Благодаря

yourButton.contentHorizontalAlignment = .left

Ответ 6

Просто отмените настройку кнопки и попробуйте установить свойство contentHorizontalAlignment в сеттере:

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

    return _yourButton;
}