6

我不明白为什么在下面的代码中,标题对齐不保持顶部。

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;

在此处输入图像描述

4

4 回答 4

5

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

于 2013-08-19T00:12:41.000 回答
3

这种行为是由于baselineAdjustment按钮的默认属性titleLabel。如果您将其设置为UIBaselineAdjustmentNone,您应该得到您正在寻找的效果。

btn2.titleLabel.baselineAdjustment = UIBaselineAdjustmentNone;

文档UILabel

基线调整

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

@property(nonatomic) UIBaselineAdjustment baselineAdjustment

讨论

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

UIBaselineAdjustmentAlignBaselines

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

在 iOS 2.0 及更高版本中可用。

UIBaselineAdjustmentAlignCenters

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

在 iOS 2.0 及更高版本中可用。

UIBaselineAdjustment无

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

在 iOS 2.0 及更高版本中可用。

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

于 2015-07-10T20:53:33.967 回答
0

在此处输入图像描述

查看情节提要中的 Content-Alignment Vertical

于 2016-11-07T15:49:02.643 回答
0

我放弃了尝试让它以编程方式工作,而只是为另一个项目设置基线约束。它似乎在 IB(内容对齐属性)上工作得很好,即使在堆栈视图中也是如此,但在代码中它不起作用。

于 2019-01-04T00:33:24.557 回答