UIButton垂直对齐不起作用

时间:2013-08-18 22:57:23

标签: ios objective-c uibutton uikit

我无法理解为什么在以下代码中,标题对齐不会保持顶部。

UIButton *btn2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn2.titleLabel.font = [UIFont systemFontOfSize:53];
btn2.frame = CGRectMake(20, 20, 270, 44);
[btn2 setTitle:@"test1 test2 test3 test4 test5 test6 test7" forState:UIControlStateNormal];
[btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
btn2.titleLabel.minimumFontSize = 1.0;
btn2.titleLabel.adjustsFontSizeToFitWidth = YES;
btn2.titleLabel.numberOfLines = 1;
btn2.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;

enter image description here

4 个答案:

答案 0 :(得分:5)

UIButton有一个名为"titleEdgeInsets"的非常漂亮的属性,您可以使用它(通过UIEdgeInsetsMake重新定位标题的顶部和底部边距,并使事物垂直居中。

答案 1 :(得分:2)

此行为是由按钮baselineAdjustment的{​​{1}}默认属性引起的。如果将其设置为titleLabel,则应该获得您正在寻找的效果。

UIBaselineAdjustmentNone

来自btn2.titleLabel.baselineAdjustment = UIBaselineAdjustmentNone;的{​​{3}}:

  

baselineAdjustment

     

控制文本时如何调整文本基线   需要缩小以适应标签。

UILabel
     

讨论

     

如果@property(nonatomic) UIBaselineAdjustment baselineAdjustment 属性设置为adjustsFontSizeToFitWidth,则此属性控制在需要调整字体大小的情况下文本基线的行为。此属性的默认值为YES。仅当UIBaselineAdjustmentAlignBaselines属性设置为numberOfLines时,此属性才有效。

  

UIBaselineAdjustmentAlignBaselines

     

相对于其基线位置调整文本。

     

适用于iOS 2.0及更高版本。

     

UIBaselineAdjustmentAlignCenters

     

相对于其边界框的中心调整文本。

     

适用于iOS 2.0及更高版本。

     

UIBaselineAdjustmentNone

     

相对于边界框的左上角调整文本。这是默认调整。

     

适用于iOS 2.0及更高版本。

请注意,1的默认调整与按钮UILabel的默认调整不同。

答案 2 :(得分:0)

enter image description here

在故事板中查看Content-Alignment Vertical

答案 3 :(得分:0)

我放弃了使它以编程方式工作的尝试,只为其他项目设置了基线约束。即使在Stack View中,它在IB(内容对齐属性)上似乎也能很好地工作,但是在代码中却不起作用。