ios – UILabel在分配NSAttributedString后不会自动收缩文本

ios – UILabel在分配NSAttributedString后不会自动收缩文本,第1张

概述我有一个宽度有限的标签,我需要它来自动调整文本的字体大小以适应. 由于我需要加下划线的文字,因此我为此标签指定了一个属性字符串: [_commentsLabel setAttributedText:[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%d comments", [comments count 我有一个宽度有限的标签,我需要它来自动调整文本的字体大小以适应.
由于我需要加下划线的文字,因此我为此标签指定了一个属性字符串:

[_commentsLabel setAttributedText:[[NSAttributedString alloc] initWithString:[Nsstring stringWithFormat:@"%d comments",[comments count]] attributes:@{NSUnderlinestyleAttributename : @(NSUnderlinestyleSingle)}]];

如您所见,注释的数量将定义文本的长度.但出于某种原因,文本并没有缩小.最小字体比例设置为0.1并选中Tighten Letter Spacing.

我认为它可能与我正在使用的自定义字体有关,但即使使用系统默认字体,文本也会被剪裁.

解决方法 我会尝试设置labels属性

@property(nonatomic) BOol adjustsFontSizetoFitWIDth

到是,看看是否能解决问题.如果没有,请告诉我.我在不同的情况下遇到了问题,但我最终使用了一些代码来手动更改大小.

这是我用来手动@R_611_6502@大小的代码.我不知道你的问题是什么,但这最终成为我的问题的一个很好的解决方案.只需在设置标签文本时调用此方法,然后自己设置字体大小.

- (CGfloat)requiredFontSizeforLabel:(UILabel *)label{    if (!label) {        return kFontSize;    }    CGfloat originalFontSize = kFontSize;    UIFont* Font = label.Font;    CGfloat FontSize = originalFontSize;    BOol found = NO;    do    {        if( Font.pointSize != FontSize )        {            Font = [Font FontWithSize: FontSize];        }        if([self wouldThisFont:Font workForThisLabel:label])        {            found = YES;            break;        }        FontSize -= 0.5;        if( FontSize < (label.minimumScaleFactor * label.Font.pointSize))        {            break;        }    } while( TRUE );    return( FontSize );}    - (BOol) wouldThisFont:(UIFont *)testFont workForThisLabel:(UILabel *)testLabel {    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:testFont,NSFontAttributename,nil];    NSAttributedString *as = [[NSAttributedString alloc] initWithString:testLabel.text attributes:attributes];    CGRect bounds = [as boundingRectWithSize:CGSizeMake(CGRectGetWIDth(testLabel.frame),CGfloat_MAX) options:(NsstringDrawingUseslineFragmentOrigin) context:nil];    BOol itWorks = [self doesThisSize:bounds.size fitInThisSize:testLabel.bounds.size];    return itWorks;}        - (BOol)doesThisSize:(CGSize)aa fitInThisSize:(CGSize)bb     {        if ( aa.wIDth > bb.wIDth ) return NO;        if ( aa.height > bb.height ) return NO;        return YES;    }

Source for code found here

总结

以上是内存溢出为你收集整理的ios – UILabel在分配NSAttributedString后不会自动收缩文本全部内容,希望文章能够帮你解决ios – UILabel在分配NSAttributedString后不会自动收缩文本所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1054795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存