由于我需要加下划线的文字,因此我为此标签指定了一个属性字符串:
[_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后不会自动收缩文本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)