第一个单元格上的 iOS 8 自动表格视图高度错误

Posted

技术标签:

【中文标题】第一个单元格上的 iOS 8 自动表格视图高度错误【英文标题】:iOS8 automatic tableviewheight wrong on first cells 【发布时间】:2015-05-07 15:18:41 【问题描述】:

我在 ios 8 上使用 Autolayout 并利用 UITableViewRowAnimationAutomatic 及其所有魔力。

当 Tableview 出现时,单元格的高度错误,并且子视图分布在整个单元格上,它们之间有很多水平空间。当我向下滚动或旋转设备并返回时,所有单元格都以正确的大小正确绘制。 调试器说没有错误并且不存在自动布局警告。

这些单元格只在 iPad 上绘制,我只为 sizeclass 指定了(Regular | Regular)。

你有什么提示可能是什么问题吗?

【问题讨论】:

你实现estimatedHeightForRow...方法了吗? heightForRow... 的代码是什么?在自动布局高度起作用之前,您需要这两种方法。 是的,我做到了:self.tableView.estimatedRowHeight = UITableViewRowAnimationAutomatic; heightForRow 没有实现,因为我在教程中读到它不再需要它 不,这是不正确的。我会添加一个答案... 另外,您使用了错误的常量。你需要UITableViewAutomaticDimension 而不是UITableViewRowAnimationAutomatic 【参考方案1】:

您需要确保您正在做三件事......

    AutoLayout 约束应覆盖单元格的整个高度。因此,只需查看约束,您就应该能够准确地说出单元格的高度。

    实现行方法的估计高度...

    - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
    
        // return an actual number here. This is a guess of how tall the cells are
        return 100;
    
    

    // Thanks @rdelmar :-)
    self.tableView.estimatedRowHeight = 100;
    

    实现行的高度...

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    
        // return auto dimension here
        return UITableViewAutomaticDimension;
    
    

一旦你完成了所有这三个操作,它就会起作用。

在此处查看我的博客以获取更多数据(请注意,自从我写博客以来,我还没有更新)。

http://www.oliverfoggin.com/using-a-static-uitableview-as-a-layout-device/

【讨论】:

我把它改成了这个,行为和bevor完全一样……会不会是(常规|常规)的事情? 您是在 iPad 还是 iPhone 上运行?常规|常规仅适用于 iPad。如果您使用的是 Size Classes,请不要更改它以保持简单。您需要将其放回 Any|Any,但您添加的约束可能会在 Regular|Regular 上。解决此问题的最简单解决方案...删除 nib 文件并重新开始。 另外,你是如何呈现视图的?它在弹出窗口中吗?还是整个屏幕?还是在拆分视图控制器中? 我在 iPad 上全屏运行,而不是弹出窗口或拆分视图。 请在您的问题中显示您的代码。 (编辑问题不要将代码放在评论中)。还有你笔尖的截图。只是为了检查发生了什么。

以上是关于第一个单元格上的 iOS 8 自动表格视图高度错误的主要内容,如果未能解决你的问题,请参考以下文章

表视图单元格上的 iOS 砌体

iOS - 如何查看表格视图单元格上的“滑动删除”操作?

在 iOS 7 上的导航视图控制器上使用后退手势时,表格视图单元格上没有淡出和淡入动画

使用最小高度单元格自动调整表格视图

动态更改静态单元格上的节标题文本

如何连续更新一堆表格单元格上的滑块?