我正试图在一行内的UILabel中显示一大段文本。 UILabel是UIScrollView的子视图,因此我可以滚动查看整个UILabel。
我的问题是sizeToFit方法只是部分有效。
textLabel.attributedText = attributedString;
textLabel.numberOfLines = 1;
[textLabel sizeToFit];
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);
UIScrollView内容大小足以显示整个UILable,但对于以下行:
所以我会尝试每隔一段时间在这里分享一些。“
UILabel显示:
所以我会尝试分享som ......
我做错了什么?
答案 0 :(得分:28)
原来代码很好 - 但是检查了Use Autolayout。 取消选中它 - 一切都很好......
答案 1 :(得分:20)
如果你想在启用自动布局的情况下实现这一点,那就很简单了。只需确保添加numberOfLines
textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.numberOfLines = 0;
答案 2 :(得分:4)
令人惊讶的是,如果你没有对标签的宽度施加约束,这将起作用:
[textLabel.superview layoutSubviews];
我通过反复试验了解到了这一点。
答案 3 :(得分:2)
尝试
textLabel.adjustsFontSizeToFitWidth = YES;
textLabel.minimumFontScale = 0.5;
答案 4 :(得分:1)
["Key1"] = {"Value1,Value2,Value3"};
["Key2"] = {"Value2,Value3,Value4,Value5"};
无法正常工作的最常见原因是sizeToFit
没有任何自动布局限制,例如,如果您隐含地依赖于相对于左上角保持固定的视图位置。添加任何约束(leading,top,centerY,任何东西)都会修复它,大概是因为它会导致UILabel
在某个时刻被调用,正如Maxthon Chan的回答所示。
答案 5 :(得分:0)
您是否尝试过NSString sizeWithAttributes:?
答案 6 :(得分:0)
由于您已将Label限制为仅显示一行文本并截断其余文本,因此其行为相同
textLabel.attributedText = attributedString;
textLabel.numberOfLines = 0;
[textLabel sizeToFit];
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textScrollView.contentSize = CGSizeMake(textLabel.frame.size.width, textLabel.frame.size.height);
希望它能帮到你