Как установить заголовок UIButton как выравнивание по левому краю?
Мне нужно отобразить адрес электронной почты с левой стороны UIButton
, но он расположен в центре.
Есть ли способ установить выравнивание в левой части UIButton
?
Это мой текущий код:
UIButton* emailBtn = [[UIButton alloc] initWithFrame:CGRectMake(5,30,250,height+15)];
emailBtn.backgroundColor = [UIColor clearColor];
[emailBtn setTitle:obj2.customerEmail forState:UIControlStateNormal];
emailBtn.titleLabel.font = [UIFont systemFontOfSize:12.5];
[emailBtn setTitleColor:[[[UIColor alloc]initWithRed:0.121 green:0.472 blue:0.823 alpha:1]autorelease] forState:UIControlStateNormal];
[emailBtn addTarget:self action:@selector(emailAction:) forControlEvents:UIControlEventTouchUpInside];
[elementView addSubview:emailBtn];
[emailBtn release];
Ответы
Ответ 1
Задайте значение contentHorizontalAlignment:
emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Вы также можете отредактировать содержимое левой вставки, иначе текст коснется левой границы:
emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
Ответ 2
Вы также можете использовать построитель интерфейсов, если вы не хотите вносить изменения в код.
Здесь я оставил выровненный текст, а также отступы:
![UIButton in IB]()
Не забывайте, что вы также можете выровнять изображение на кнопке.:
![enter image description here]()
Ответ 3
В Swift 3 +:
button.contentHorizontalAlignment = .left
Ответ 4
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Ответ 5
Использование emailBtn.titleEdgeInsets
лучше, чем contentEdgeInsets
, если вы не хотите изменять всю позицию содержимого внутри кнопки.
Ответ 6
Swift 4 +
button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
Ответ 7
Здесь объясняется, как это сделать и почему это работает так:
http://cocoathings.blogspot.com/2013/03/how-to-make-uibutton-text-left-or-right.html
Ответ 8
в xcode 8.2.1 в конструкторе интерфейсов он перемещается в: ![enter image description here]()
Ответ 9
В коде @DyingCactus имеется небольшая ошибка.
Вот правильное решение добавить UILabel в UIButton, чтобы выровнять текст кнопки, чтобы лучше управлять кнопкой "title":
NSString *myLabelText = @"Hello World";
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];
// position in the parent view and set the size of the button
myButton.frame = CGRectMake(myX, myY, myWidth, myHeight);
CGRect myButtonRect = myButton.bounds;
UILabel *myLabel = [[UILabel alloc] initWithFrame: myButtonRect];
myLabel.text = myLabelText;
myLabel.backgroundColor = [UIColor clearColor];
myLabel.textColor = [UIColor redColor];
myLabel.font = [UIFont fontWithName:@"Helvetica Neue" size:14.0];
myLabel.textAlignment = UITextAlignmentLeft;
[myButton addSubview:myLabel];
[myLabel release];
Надеюсь, это поможет...
Ал
Ответ 10
Для Swift 2.0:
emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left
Это может помочь, если кому-то нужно.
Ответ 11
В Swift 5.0 и Xcode 10.2
У вас есть два подхода
1) Прямой подход
btn.contentHorizontalAlignment = .left
2) Пример SharedClass (написать один раз и использовать каждую посуду)
Это ваш общий класс (например, вы получаете доступ ко всем свойствам компонентов)
import UIKit
class SharedClass: NSObject {
static let sharedInstance = SharedClass()
private override init() {
}
}
//UIButton extension
extension UIButton {
func btnProperties() {
contentHorizontalAlignment = .left
}
}
В вашем ViewController вызов, как это
button.btnProperties()//This is your button
Ответ 12
Пытаться
button.semanticContentAttribute = UISemanticContentAttributeForceRightToLeft;