当高度大于8192时,UILabel视图消失

时间:2013-01-02 16:29:22

标签: ios uilabel

将大字符串分配给UILabel。并且,将此标签添加到滚动视图中 当UILabel高度大于8192pt(即2 ^ 13)时,UILabel消失。

这是iOS错误吗?

我应该使用其他实现来渲染这么多的字符串吗? 我应该将表视图与单元格一起使用吗?

更新

将显示UILabel的代码:

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor clearColor];
label.text = rumor.displayText;
label.frame = CGRectMake(0, 0, self.view.frame.size.width, 8192);
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;

UILabel确实消失的代码

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor clearColor];
label.text = rumor.displayText;
label.frame = CGRectMake(0, 0, self.view.frame.size.width, 8193);
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;

2 个答案:

答案 0 :(得分:7)

首先 - 它不一定是个bug。这只是未定义的行为。请注意,对于每个组件,当组件停止正常工作时,将存在一些大小上限。 8192分似乎是一个下限但仍然是纵向模式下iPad屏幕的8倍。

你不应该把观点变得那么大。请注意,UIView经常被渲染到内存中并进行缓冲,以便更快地重绘。高度为8192,缓冲区必须非常大。

将文本拆分为多个UILabel(例如按段落)肯定会有所改进。

请参阅https://stackoverflow.com/a/1494496/669586

答案 1 :(得分:0)

我遇到了与UITextViews相同的问题,并提出了一个相当有效的解决方案。

如果你想看到它,请在这里查看我的答案!:

https://stackoverflow.com/a/37147533/2155673

应该很容易适应UILabels。