UIButton垂直对齐不起作用

我无法理解为什么在下面的代码中,标题对齐不是顶部。

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; 

在此处输入图像描述

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

btn2.titleLabel.baselineAdjustment = UIBaselineAdjustmentNone;

来自UILabel的文档 :

baselineAdjustment

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

 @property(nonatomic) UIBaselineAdjustment baselineAdjustment 

讨论

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

UIBaselineAdjustmentAlignBaselines

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

适用于iOS 2.0及更高版本。

UIBaselineAdjustmentAlignCenters

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

适用于iOS 2.0及更高版本。

UIBaselineAdjustmentNone

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

适用于iOS 2.0及更高版本。

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

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

在此处输入图像描述

在故事板中查看Content-Alignment Vertical