adjustsFontSizeToFitWidth 时 UILabel 的裁剪

Posted

技术标签:

【中文标题】adjustsFontSizeToFitWidth 时 UILabel 的裁剪【英文标题】:Clipping of UILabel when adjustsFontSizeToFitWidth 【发布时间】:2012-10-06 10:25:42 【问题描述】:

当我将文本添加到 adjustsFontSizeToFitWidth 设置为 YES 的标签时,文本不再垂直居中,并最终将文本剪切到标签框架的底部。对于大量文本,它最终会从标签底部消失。

如果您添加较少的文本,会发生这种情况:

这被剪裁了,正如我所期望的那样(即字体大小没有减小,文本在标签中垂直居中并被剪裁在顶部和底部。

这里是重现的代码:

- (void)loadView 
    [super loadView];

    self.view.backgroundColor = [UIColor blueColor];
    testLabel = [[UILabel alloc] init];
    testLabel.font = [UIFont boldSystemFontOfSize:172];
    testLabel.textColor = [UIColor blackColor];
    testLabel.adjustsFontSizeToFitWidth = YES;
    testLabel.numberOfLines = 1;
    testLabel.frame = CGRectMake(50, 50, 300, 100);
    testLabel.text = @"123";

    [self.view addSubview:testLabel];

这应该发生吗?以及如何让我的标签垂直居中而不考虑标签中的字符数。

【问题讨论】:

【参考方案1】:

添加

testLabel.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

到您的代码中以垂直居中字体比例的文本。

【讨论】:

太棒了,克鲁姆鲁尔!这工作得很好,我不知道这个属性。我会帮助 adjustFontSizeToFitWidth 属性提到这是类参考。再次感谢。 与 UILabel 合作了这么多年,我从来没有遇到过这个属性))【参考方案2】:

还想补充一点,adjustsFontSizeToFitWidth 不适用于属性文本,所以如果可以的话,将属性添加到标签而不是属性文本。这对我有用。

【讨论】:

以上是关于adjustsFontSizeToFitWidth 时 UILabel 的裁剪的主要内容,如果未能解决你的问题,请参考以下文章

adjustsFontSizeToFitWidth 与 NSLineBreakByCharWrapping 无法共用

自动布局在adjustsFontSizeToFitWidth 与fixedNumberOfLines 一起使用之前计算大小

现在是不是可以使用带有adjustsFontSizeToFitWidth 的Multiline UILabel?

adjustsFontSizeToFitWidth 或 boundingRectWithSize 何时更改 context.actualScaleFactor?

adjustsFontSizeToFitWidth 对 UILabel 的影响与对 UITextField 的影响不同

iOS 根据给定宽度自适应文字大小