Ser*_*kar 31 iphone objective-c nsattributedstring uilabel ios
我有UILabel的行数= 2系统字体大小= 15最小字体大小= 8换行模式 - 截断尾
当我为UILabel设置具有NSString类型的长文本时,它可以正常工作并显示多行文本(如果需要,可以缩放).当我尝试使用NSAttributedString类型设置文本时,它会忽略最小字体大小和自动收缩,因此我看到一个最大字体大小的行文本.
是否有可能解决这个问题
看起来像这样(标签大小是常量)
-----------------------
| normal NSString Text|
| very very long ... |
-----------------------
---------------------------
|NSAttributedString tex...|
---------------------------
Run Code Online (Sandbox Code Playgroud)
Jul*_* B. 98
我找到了一种方法:
label.adjustsFontSizeToFitWidth = true
label.attributedText = attributedString
label.lineBreakMode = .ByTruncatingTail // this did the trick!
Run Code Online (Sandbox Code Playgroud)
仅在设置属性字符串后设置第三行时才有效.似乎属性字符串在设置时会覆盖换行符(以及其他内容).
minimumFontSize
从iOS6开始不推荐使用.此外,adjustsFontSizeToFitWidth仅在numberOfLines
设置为1 时有效.UILabel 不会跨多行调整文本大小,因为在缩小字体时处理换行符时存在歧义.
使用minimumScaleFactor
设置文本应该缩放的最小尺寸.
以下代码将UILabel
使用字体大小为20的属性字符串填充,并将其缩小一半,最小大小为10.
self.label.lineBreakMode = NSLineBreakByTruncatingTail;
NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan! Presenting the great... Hulk Hogan!"];
[hogan addAttribute:NSFontAttributeName
value:[UIFont systemFontOfSize:20.0]
range:NSMakeRange(0, [hogan length])];
[self.label setAttributedText:hogan];
self.label.adjustsFontSizeToFitWidth = YES;
self.label.numberOfLines = 1;
self.label.minimumScaleFactor = 0.5;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17495 次 |
最近记录: |