我有一个声明为IBOutlet的UILabel。在调用sizeToFit
之后,我仍然没有看到整个文本,因为UILabel的大小没有变化。然后我使用_myLabel.frame
进行了检查,我发现高度实际上已增加,但它没有反映在视图中。我试图通过以编程方式插入UILabel来做同样的事情,sizeToFit
似乎完美无缺。
[_myLabel setText:@"very very very long text"];
[_myLabel setNumberOfLines:0];
NSLog(@"%@", NSStringFromCGRect(_myLabel.frame)); //before sizeToFit
[_myLabel sizeToFit];
NSLog(@"%@", NSStringFromCGRect(_myLabel.frame)); //after sizeToFit
我怀疑它与自动布局有关。
答案 0 :(得分:2)
这是约束的问题。谢谢!
我通过清除约束来修复它并添加了这一行:
_myLabel.preferredMaxLayoutWidth = [_myLabel alignmentRectForFrame:_myLabel.frame].size.width;
强制标签重新调整它的高度。
答案 1 :(得分:0)
或者,子类UILabel
并覆盖sizeThatFits:
以定义sizeToFit
的含义。