UIButton标题仅显示其中的一半

时间:2013-10-13 14:48:01

标签: objective-c cocoa-touch uibutton uilabel

我有UIButton FONT属性的自定义titleLabel

由于iOS 6.0的某些原因,它只显示标题的一半。我试着增加标题的高度。但那没用。

我缺少什么?

this是我唯一的选择吗?

btn.titleLabel.font = [UIFont fontWithName:@"Frutiger95-UltraBlack" size:17];

enter image description here

这应该是它的外观(减去颜色变化)

enter image description here

2 个答案:

答案 0 :(得分:0)

单线标签在垂直轴上具有低内容抗压缩优先级。因此,当您增加字体大小时,它们不会增加其intrinsicContentSize的高度。将compressionResistancePriority设置为UILayoutPriorityDefaultHigh或UILayoutPriorityRequired应该修复它。

[btn.titleLabel setContentCompressionResistancePriority:UILayoutPriorityRequired
                                                forAxis:UILayoutConstraintAxisVertical];

我认为更新标签就足够了,但您可能还需要增加按钮本身的优先级。

[btn setContentCompressionResistancePriority:UILayoutPriorityRequired
                                      forAxis:UILayoutConstraintAxisVertical];

答案 1 :(得分:0)

我认为您需要将按钮标题设置为nil,然后创建自己的自定义UILabel 并在您的按钮上添加该标签,如下面给出的示例 -

UILabel *lblloginbtntitle=[[UILabel alloc]initWithFrame:CGRectMake(0, 0, btnLogin.frame.size.width, btnLogin.frame.size.height)];
lblloginbtntitle.text=NSLocalizedString(@"Login", nil);
lblloginbtntitle.textAlignment=NSTextAlignmentCenter;
lblloginbtntitle.textColor=[UIColor whiteColor];
lblloginbtntitle.font=[UIFont fontWithName:@"AvenirNextLTPro-Regular" size:20];
[btnLogin addSubview:lblloginbtntitle]; 
[btnLogin setTitle:@"" forState:UIControlStateNormal]