gpt4 book ai didi

ios - UITextView文字在高度达到8192.0后变得不可见

转载 作者:技术小花猫 更新时间:2023-10-29 10:53:49 29 4
gpt4 key购买 nike

我有一个不可滚动的 UITextView 嵌入到 UIScrollView 中,并动态地向 UITextView 添加文本。 UIScrollView 根据 TextView 的框架相应地调整它的 contentSize。但是,一旦 UITextView 的高度超过 8192,文字就会变得不可见(但仍然存在,因为可以使用放大镜高亮显示文字,甚至可以通过放大镜看到部分文字) .

  CGRect textviewFrame = self.TextView.frame;
textviewFrame.size.height = [self textViewHeightForAttributedText:self.TextView.attributedText andWidth:320.0];
self.TextView.frame = textviewFrame;
self.ScrollView.contentSize = self.TextView.frame.size;

相应地调整 UITextView 大小的辅助函数:

- (CGFloat)textViewHeightForAttributedText:(NSAttributedString *)text andWidth:(CGFloat)width
{
UITextView *textView = [[UITextView alloc] init];
[textView setAttributedText:text];
CGSize size = [textView sizeThatFits:CGSizeMake(width, FLT_MAX)];
return size.height;
}

没有意识到这是同一个 Unresolved 问题 here直到我通过将最大大小强制为 8193 来明确测试它并且出现问题(虽然最大大小为 8192 仍然可以正确显示文本)。以前有人遇到过这个问题并且知道解决方法吗?谢谢

最佳答案

我最近遇到了这个问题,并找到了一个有效的解决方法。虽然它看起来像是一个 iOS bug 恕我直言,但实际上不是...... CALayer 大小有实际限制,而且绘制 8K 高的文本需要很长时间。更好的做法是按照 Apple 的意图去做,并且只渲染可见的文本位……这就是 UITextView 毕竟扩展 UIScrollView 的原因。

问题是 UITextView 与 UI 的其他部分集成起来不是很容易。在我的例子中,我正在开发一个新闻应用程序,其中单个 UITextView 用于呈现文章,并且在它的上方和下方有一些单独的 UI(标题和按钮等),所有这些都托管在一个可滚动的容器中。

我找到的解决方案是将 UITextView 分成两个 View ...一个专用的 UITextView 容器,其框架是全文大小(即与 UITextView 的 contentSize 大小相同),它是 UITextView 的父 View 。您的子 UITextView 的框架应设置为外部可滚动容器的边界。

然后您所要做的就是使用键值观察来监视外部可滚动容器 View 的 contentOffset 属性(在我的例子中,这是一个 UICollectionView)。当它的 contentOffset 发生变化时,您更新 (1) UITextView 的 contentOffset,以及 (2) UITextView 图层的转换属性。通过更新该转换属性,UITextView 被固定为填充其 super View 的当前可见部分。但是因为您还更新了 UITextView 的 contentOffset,所以用户完全看不到这种欺骗行为……它的外观和行为就像 UITextView 非常大一样。

关于ios - UITextView文字在高度达到8192.0后变得不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23582497/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com