我无法理解为什么在以下代码中,标题对齐不会保持顶部。
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;
答案 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)
答案 3 :(得分:0)
我放弃了使它以编程方式工作的尝试,只为其他项目设置了基线约束。即使在Stack View中,它在IB(内容对齐属性)上似乎也能很好地工作,但是在代码中却不起作用。