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

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

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

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

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

【问题讨论】:

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

标签: ios uitableview autolayout size-classes


【解决方案1】:

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

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

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

    - (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;
    
  3. 实现行的高度...

    - (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 上全屏运行,而不是弹出窗口或拆分视图。
  • 请在您的问题中显示您的代码。 (编辑问题不要将代码放在评论中)。还有你笔尖的截图。只是为了检查发生了什么。
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多