我有一个不可滚动的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最大尺寸仍然显示正确的文本).有人在遇到这个问题并且知道一个解决方法吗?谢谢
编辑
从头开始构建一个新的示例项目,动态 tableview 单元格高度完美无缺。然后我尝试通过将我的项目缩减到最低限度来进行复制,但它仍然损坏(前几个单元格有问题)。为工作和不工作的例子附加完整的项目。项目/代码字面上看起来 99% 相同,而且我无法弄清楚 1% 的差异在哪里。唯一突然出现在我身上的是我使用了不同的尺寸类(wAny hAny vs wCompact hRegular 但我无法想象这会做任何事情,因为我只是在纵向测试
工作项目:

不工作的项目:

WORKING (new project from scratch):
https://drive.google.com/file/d/0B_EIkjmOj3ImWXZjVFZMYXZmVGc/view?usp=sharing
NOT WORKING (my project, cleaned up to it's bare minimum)
https://drive.google.com/file/d/0B_EIkjmOj3ImMGRNOXU2RlNkWEk/view?usp=sharing
Run Code Online (Sandbox Code Playgroud)
在网上搜索试图了解发生了什么,但由于某种原因,我的单元格高度不正确,直到我滚动过原型单元格。
初始加载时:

滚动经过每个单元格后:

背景颜色:
cell.postTextLabel.backgroundColor = [UIColor orangeColor];
subView.backgroundColor = [UIColor blueColor];
contentView.backgroundColor = [UIColor brownColor];
这里没有做任何太花哨的事情:只是一个原型单元格、一个子视图和三个标签(用户名、时间戳、文本)。
下面的屏幕截图突出显示了我在 Storyboard 中的约束:




我从 Parse 中提取数据,并在设置 tableView 布局时重新加载我的数据
[self.tableView setNeedsLayout];
[self.tableView layoutIfNeeded];
[self.tableView reloadData];
最后是我的cellForRowAtIndexPath方法:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [self postCellAtIndexPath:indexPath];
}
- (UITableViewCell *)postCellAtIndexPath:(NSIndexPath …Run Code Online (Sandbox Code Playgroud) 链接performBatchUpdate调用的正确方法是什么UICollectionView,以便在下一个更新开始之前完成一次更新,以防止同时触发多次,从而导致 IndexPaths 不同步(由于删除与插入混合)
ios ×3
autolayout ×1
objective-c ×1
swift ×1
uiscrollview ×1
uistoryboard ×1
uitableview ×1
uitextview ×1