Как установить заголовок UIButton как выравнивание по левому краю? - PullRequest
446 голосов
/ 04 мая 2010

Мне нужно отобразить адрес электронной почты слева от 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];

Ответы [ 12 ]

1512 голосов
/ 04 мая 2010

Установка содержимогоHor HorizontalAlignment:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

Возможно, вы также захотите настроить левую вставку содержимого, иначе текст будет касаться левой границы:

emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
117 голосов
/ 29 марта 2014

Вы также можете использовать конструктор интерфейса, если вы не хотите вносить изменения в код. Здесь я выровняю текст по левому краю, а также добавлю несколько отступов:

UIButton in IB

Не забывайте, что вы также можете выровнять изображение на кнопке.

enter image description here

31 голосов
/ 01 сентября 2015

In Swift 3 +:

button.contentHorizontalAlignment = .left
13 голосов
/ 30 августа 2014
UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
9 голосов
/ 22 сентября 2017

Swift 4 +

button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
9 голосов
/ 30 августа 2013

Использование emailBtn.titleEdgeInsets лучше, чем contentEdgeInsets, если вы не хотите изменять всю позицию содержимого внутри кнопки.

8 голосов
/ 06 марта 2013

Здесь объясняется, как это сделать и почему это работает так: http://cocoathings.blogspot.com/2013/03/how-to-make-uibutton-text-left-or-right.html

6 голосов
/ 27 января 2017

в xcode 8.2.1 в конструкторе интерфейсов он перемещается в: enter image description here

4 голосов
/ 04 января 2011

В коде @DyingCactus есть небольшая ошибка. Вот правильное решение для добавления UILabel в UIButton для выравнивания текста кнопки, чтобы лучше контролировать заголовок кнопки:

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];

Надеюсь, это поможет ....

Al

2 голосов
/ 02 декабря 2015

Для Swift 2.0:

emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  

Это может помочь, если нужно.

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