UIButton Title 只显示一半

Posted

技术标签:

【中文标题】UIButton Title 只显示一半【英文标题】:UIButton Title only displays half of it 【发布时间】:2013-10-21 04:58:42 【问题描述】:

我有一个 UIButton,它有一个用于 titleLabel 属性的自定义 FONT

由于某种原因,ios 6.0 只显示了一半的标题。我尝试增加标题的高度。但这没有用。

我错过了什么?

this 是我唯一的选择吗?

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

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

【问题讨论】:

正常应该怎么看? 这可能与我在使用自定义字体时遇到的问题有关。见这里:***.com/questions/9015317/… 再一次,请不要在 Cocoa Touch 问题中使用可可标签。正确的标签是 cocoa-touch。 【参考方案1】:

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

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

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

[btn setContentCompressionResistancePriority:UILayoutPriorityRequired
                                      forAxis:UILayoutConstraintAxisVertical];

【讨论】:

它没有用。我可以增加大小,它适用于系统字体。当我在 ios 6.0 上使用自定义字体时,它就会被切断。字体大小也没有相关性。我可以尝试使用自定义字体的任何大小,但它不起作用【参考方案2】:

我认为您需要将按钮标题设置为零,然后制作自己的自定义 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]

【讨论】:

以上是关于UIButton Title 只显示一半的主要内容,如果未能解决你的问题,请参考以下文章

为 UIButton 设置 titleLabel

UIButton移动动画

如何滚动到 UIScrollview 中的 UIButton 位置

用于 ipad 的 UITableViewCell 中的 UIButtons

UIButton 显示 BackgroundImage、Image 和 Title

UIButton 的 title 属性正确记录但在将按钮添加为子视图时未显示