提问



我需要显示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];

最佳参考


设置contentHorizo​​ntalAlignment:


emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;


您可能还想调整内嵌左边的内容,否则文本将触及左边框:


emailBtn.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

其它参考1


如果您不想在代码中进行调整,也可以使用界面构建器。
在这里,我保持对齐文本并将其缩进一些:





别忘了你也可以在按钮上对齐图像:




其它参考2


在Swift 3+中:


button.contentHorizontalAlignment = .left

其它参考3


UIButton *btn;
btn.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

其它参考4


使用emailBtn.titleEdgeInsets优于contentEdgeInsets,以防您不想更改按钮内的整个内容位置。

其它参考5


这里解释了如何做到这一点及其原理:
http://cocoathings.blogspot.com/2013/03/how-to-make-uibutton-text-left-or-right.html[13]

其它参考6


Swift 4 +


button.contentHorizontalAlignment = .left
button.contentVerticalAlignment = .top
button.contentEdgeInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)

其它参考7


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


希望这可以帮助....




其它参考8


在接口构建器中的xcode 8.2.1中,它移动到: [14]

其它参考9


对于Swift 2.0:


emailBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignment.Left  


如果需要,这可以提供帮助。