Sim*_*ing 11 uiscrollview uitextview ios
我有一个不可滚动的UITextView嵌入式UIScrollView和UITextView动态添加文本.在UIScrollView它的contentSize因此基于的TextView的框架上进行调整.但是,一旦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;
Run Code Online (Sandbox Code Playgroud)
辅助功能相应地调整大小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;
}
Run Code Online (Sandbox Code Playgroud)
不知道这是这是未解完全相同的问题,在这里,直到我测试了它明确的强制最大尺寸8193和出现问题(而8192最大尺寸仍然显示正确的文本).有人在遇到这个问题并且知道一个解决方法吗?谢谢
我最近遇到了这个问题并且已经找到了解决它的有效方法.虽然它似乎是一个iOS的错误恕我直言,它真的不是...... CALayer尺寸有实际限制,加上绘制8K高文本需要很长时间.苹果打算做的更好,只渲染一些可见的文本...这就是为什么UITextView毕竟扩展了UIScrollView.
问题是UITextView与其他UI的集成并不是非常容易.在我的情况下,我正在开发一个新闻应用程序,其中使用单个UITextView来呈现文章,并且在其上方和下方有一些单独的UI(标题和按钮等),所有这些都托管在单个可滚动容器中.
我发现的解决方案是将UITextView拆分为两个视图...一个专用的UITextView容器,其框架是全文大小(即UITextView的contentSize大小相同),它是UITextView的超级视图.您的子UITextView的框架应设置为外部可滚动容器的边界.
然后你要做的就是使用键值观察来监视外部可滚动容器视图的contentOffset属性(在我的例子中,这是一个UICollectionView).当其contentOffset更改时,您更新(1)UITextView的contentOffset,以及(2)UITextView图层的transform属性.通过更新该转换属性,UITextView被修复以填充其超级视图的当前可见部分.但是因为你也在更新UITextView的contentOffset,这个技巧对于用户来说是完全不可见的......它的外观和行为就好像UITextView非常大.
| 归档时间: |
|
| 查看次数: |
1202 次 |
| 最近记录: |