dynamicTableView单元格高度滚动后不正确(iOS 8) – 完整的截图
编辑
从头开始构build一个新的示例项目,dynamictableview单元格高度工作正常。 然后,我试图通过削减我的项目,以尽可能最小的复制,它仍然是破碎(前几个单元车)。 附加完整的工程,而不是工作的例子。 项目/代码字面上看起来99%相同,因为我的爱无法弄清楚1%的差异在哪里。 唯一突然出现在我身上的是我使用了不同大小的类(wAny hAny vs wCompact hRegular,但是我无法想象这会做任何事情,因为我只在肖像中testing
工作项目:
不工作项目:
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
已经搜遍networking试图了解发生了什么,但由于某种原因,我的单元格高度是不正确的,直到我滚过原型单元格。
初始加载时:
滚过每个单元格后:
背景颜色: cell.postTextLabel.backgroundColor = [UIColor orangeColor]; subView.backgroundColor = [UIColor blueColor]; contentView.backgroundColor = [UIColor brownColor];
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 *)indexPath { static NSString *PostCellIdentifier = @"PostCell"; PostCell *cell = (PostCell *)[self.tableView dequeueReusableCellWithIdentifier:PostCellIdentifier forIndexPath:indexPath]; [self configurePostCell:cell atIndexPath:indexPath]; [cell setNeedsLayout]; [cell layoutIfNeeded]; [cell setNeedsUpdateConstraints]; [cell updateConstraintsIfNeeded]; return cell; }
最后我发现这个问题为什么不起作用。 我下载了你上传的项目,并在其中进行修改。 并发现你使用紧凑的常规大小类,导致错误的问题。 在将您的大小类转换为Any之后,Any就可以正常工作了。因此,解决scheme的关键是将wCompact hRegular更改为wAny hAny。 代码没有变化。
这是最初的答案。
详细的答案:
1)大小类首先阅读这个苹果的文档。
2)在你的破碎的演示中,select大小类如下所示:
这表示您select了像紧凑宽度和常规高度的特定视图,这意味着此自动布局只能在特定的iPhone纵向上工作。
紧凑宽度| 常规高度组合指定的布局更改仅适用于纵向方向的类似iPhone设备的尺寸。
控件wCompact hRegular指示紧凑宽度和常规高度尺寸类别。
我使用下面的大小类,也在你的工作项目中,我可以看到下面的大小类:
在这个大小类,它工作正常。
我不知道是苹果的bug还是什么。 !
如果您只想支持纵向模式和仅支持iPhone,则可以在开发信息 – >设备中selectiPhone。 并为了方向,你可以select纵向和上下颠倒在设备方向。
希望这可以帮助你找出问题。
我遇到了同样的问题,只是尝试使用可包含您的内容的更大的estimatedRowHeight。 当使用自定义大小的单元格时,SDK似乎做错了什么。
只需以编程方式设置行高。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath { return rowHieght; }
对于我的问题,我设置了UILabel字体
layoutSubviews:
这是造成这个问题。
我把代码移到其他地方后,它工作得很好
我也有同样的问题, 如何在uitableview中添加uviewviewcell
你也有自定义的单元格,所以在customcell类中使用下面的函数,你的情况是PostCell.m。
- (void)layoutSubviews { [super layoutSubviews]; // in my case i only had set frame here while my other // declarations were in init function, so it solve my problem }
它解决了我的同样的问题,希望它也能解决你的问题,但是你必须在自己的情况下去思考。
首先你必须设置你的细节标签行0,然后给予前导,尾随和底部约束。
在viewDidLoad
方法中添加:
tableview.estimatedRowHeight = 50.0 //(your estimated row height) tableview.rowHeight = UITableViewAutomaticDimension
然后在tableview委托get方法单元格行高中返回行高
在你的代码中
[cell layoutIfNeeded] [cell updateContraintsIfNeeded]
不需要,所以删除它
- 界面生成器中的“宽度等于高度”约束
- embedded在其他视图中的UITableView的段标题位置不正确
- 在iOS 7上的UITableViewCell之间绘制自定义分隔线
- 如何在通用的精灵套件游戏中调整精灵的大小
- 为什么顶层布局指南在我的iMessage扩展中移动
- UITableView:如何在单击button时dynamic更改单元格高度?
- Xcodecheckbox在哪里“将自动resize的掩码转换为约束”
- 在UITableViewCell中的UILabel大小不正确(分配文本后的animation)
- UICollectionView – iOS 10 – iPhone 6 Plus模拟器崩溃,但适用于真实设备