UIButton垂直对齐不起作用

Riz*_*zon 6 objective-c uibutton uikit ios

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

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;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Mic*_*ann 5

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

  • 是的,我想我可能会用它......但是你知道为什么会这样吗?!我的意思是,wtf. (3认同)

emb*_*emb 3

此行为是由于baselineAdjustment按钮的默认属性造成的titleLabel。如果您将其设置为UIBaselineAdjustmentNone,您应该会获得您想要的效果。

btn2.titleLabel.baselineAdjustment = UIBaselineAdjustmentNone;

文档UILabel

基线调整

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

@property(nonatomic) UIBaselineAdjustment baselineAdjustment
Run Code Online (Sandbox Code Playgroud)

讨论

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

UIBaselineAdjustment对齐基线

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

适用于 iOS 2.0 及更高版本。

UI基线调整对齐中心

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

适用于 iOS 2.0 及更高版本。

UI基线调整无

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

适用于 iOS 2.0 及更高版本。

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