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;
此行为是由按钮的titleLabel
的baselineAdjustment
默认属性引起的。 如果将其设置为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