问题:
设置按钮titleEdgeInset
和UITextAlignmentLeft
后,按钮的标题仍然居中,而不是左对齐。
详细信息:
我有一个200px宽的按钮,使用自定义背景,左边是图像。由于我不希望按钮标题覆盖图像,因此我使用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"];
答案 0 :(得分:80)
我的测试代码:
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
。我的结果:
答案 1 :(得分:22)
为按钮设置contentHorizontalAlignment属性,它将起作用。
YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
Swift 4.0
YourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignment.center
答案 2 :(得分:4)
在titleLabel上添加背景颜色。我认为它的大小适合,因此文本对齐无关紧要。它只要它需要它。您需要解决的是标签本身的位置。您可能必须扩展UIButton并覆盖layoutSubviews才能使其正确。我从来没有见过带有中心标签的按钮。
答案 3 :(得分:2)
为按钮设置contentHorizontalAlignment属性:
yourButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
答案 4 :(得分:1)
Swift 3
设置contentHorizontalAlignment属性做好工作。感谢
yourButton.contentHorizontalAlignment = .left
答案 5 :(得分:0)
只需覆盖按钮的setter并尝试在setter中设置contentHorizontalAlignment属性:
-(UIButton *)yourButton {
[_yourButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
return _yourButton;
}