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"];
Ответы
Ответ 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;
}