编辑
从头开始构建一个新的示例项目,并且动态tableview单元格的高度正常运行。然后,我尝试通过将项目缩减到最低限度并且仍然损坏(前几个单元有问题)来进行复制。附上完整的项目,无论是工作实例还是不工作实例。项目/代码从字面上看看起来是99%相同,对我的爱我无法弄清楚1%的差异在哪里。出现在我身上的唯一一件事是,我使用了不同的大小类(wHny 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
在网上搜寻了一下,试图了解正在发生的事情,但是由于某些原因,我的单元格高度不正确,直到我滚动通过原型(prototype)单元格为止。
初始加载时:
并滚动到每个单元格之后:
背景颜色:
cell.postTextLabel.backgroundColor = [UIColor orangeColor]; subView.backgroundColor = [UIColor blueColor]; contentView.backgroundColor = [UIColor brownColor];
这里不要做任何花哨的事情:只是一个原型(prototype)单元,一个 subview 和三个标签(用户名,时间戳,文本)。
以下屏幕截图突出显示了我在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之后,任何都可以正常工作。因此,解决方案的关键是将 wCompact hRegular 更改为 wHny hAny。 代码没有变化。
那是最初的答案。
详细答案:
1)对于大小类,首先阅读apple的this文件。
2)在 splinter 的演示中,尺寸等级的选择如下:
这表明您选择了特定的 View ,例如紧凑的宽度和常规的高度,这意味着该自动布局仅适用于特定的iPhone纵向。
我使用了以下尺寸等级,在您的工作项目中,我还可以看到以下尺寸等级:
在这个Size类中,它工作正常。
我不知道是苹果的 bug 还是什么。 !!!
如果只想支持肖像模式,而只支持iPhone,则可以在“开发信息”->“设备”中选择“iPhone”。对于方向,您可以选择纵向,然后在设备方向中上下颠倒。
希望这可以帮助您解决问题。
关于ios - 直到滚动后,动态TableView单元格的高度才正确(iOS 8)-完整的屏幕快照已附加,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30114994/