调用sizeToFit后,UILabel未在视图中调整大小

时间:2013-06-23 12:12:10

标签: ios objective-c uilabel

我有一个声明为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

我怀疑它与自动布局有关。

2 个答案:

答案 0 :(得分:2)

这是约束的问题。谢谢!

我通过清除约束来修复它并添加了这一行:

    _myLabel.preferredMaxLayoutWidth = [_myLabel alignmentRectForFrame:_myLabel.frame].size.width;

强制标签重新调整它的高度。

答案 1 :(得分:0)

或者,子类UILabel并覆盖sizeThatFits:以定义sizeToFit的含义。