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



为UILabel分配大字符串。然后,将这个标签添加到滚动视图中。
当UILabel的高度大于8192pt(即2^13)时,UILabel就会消失。

这是一个iOS bug吗?

我应该使用其他实现来呈现如此数量的字符串吗?
我应该用单元格表视图吗?

显示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;

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

你不应该让视图那么大。请注意,UIView经常被渲染到内存和缓冲,使重绘更快。对于8192的高度,缓冲区必须非常大。

将文本分成几个UILabel(例如按段落)肯定是一种改进。

见https://stackoverflow.com/a/1494496/669586

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

如果你想看,看看我的答案在这里!:

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

最新更新