【问题标题】:xcode 7.2 UITableViewAutomaticDimension is being set without codexcode 7.2 UITableViewAutomaticDimension 没有代码设置
【发布时间】:2016-06-17 18:12:10
【问题描述】:

我是一个 swift/xcode 新手,关注一个使用 Auto Layout 演示带有原型单元格的 TableViews 的图书应用程序。这本书提供了完整的示例项目,所以我有一个项目可以比较。

表格视图单元格使用不同高度的图像。我完全按照这本书,使用了相同的图像等。但是本书项目显示的 TableViewCell 行可以动态调整到图像的高度,但我的项目没有。

    // both of the projects contain this line
    tableView.estimatedRowHeight = 50

    // I added this line to get cell rows to dynamically adjust size
    tableView.rowHeight = UITableViewAutomaticDimension

添加了神奇的代码行,我的项目完美运行,就像书籍项目一样。

我的问题是,为什么图书项目没有 UITableViewAutomaticDimension 代码的魔力线可以正常显示?是否有我可能错过的属性设置?表格视图是否可以通过其他方式知道使用自动尺寸?

我已经仔细检查了我的所有约束(它们遵循本书),检查器中表格视图、单元格、框架、图像视图的所有属性和大小,并在网上搜索了可能的答案。 (这就是我发现自动维度代码魔法的原因。)

有没有人知道在哪里(除了魔法代码行)xcode 可以被告知在单元格行上使用自动尺寸?关于我可以在哪里寻找为什么两个明显相同的项目会产生不同的单元格行高度大小调整行为的任何建议?谢谢

【问题讨论】:

  • 感谢 techlorr,您的参考似乎相关。当我看到您的评论时,我正要发布我的“解决方案”。我认为这与我即将发布的答案有关。

标签: ios xcode uitableview


【解决方案1】:

我尝试使用我的代码来查看 tableView 的单元格自动布局是如何工作的。我的项目中有这两个代表来自动调整 tableView 单元格的高度,

-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return 44.0;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

它按预期工作,然后我只是评论了这两个代表并将这一行放在我的 viewDidLoad 方法中,

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.tableView.estimatedRowHeight = 50;
}

它仍然像以前一样工作。

所以我对此进行了深入研究,我发现许多开发人员已经报告过您面临的类似问题 self.tableView.rowHeight = UITableViewAutomaticDimension;有些时候表现得很奇怪。

有时只需添加

self.tableView.estimatedRowHeight = 50;

(就像我现在一样),有时您必须同时添加两者

tableView.estimatedRowHeight = 50

tableView.rowHeight = UITableViewAutomaticDimension

在某些情况下,上述方法都不起作用,但估计HeightForRowAtIndexPath 和 heightForRowAtIndexPath 的两个委托。

这是我目前对 UITableViewAutomaticDimension 的了解,如果您发现其他信息,请分享。

谢谢!

【讨论】:

    【解决方案2】:

    我重新设计了整个项目,现在它可以正常工作,无需神奇的代码行。 @techloverr 提供了一个参考 here on stackoverflow,(我认为)支持我的理论。

    我的回答理论是单元格的默认值是自动标注尺寸。上面的参考资料支持这一点。

    我认为在第一次项目尝试期间,我必须在加载图像视图或标签占位符时手动调整或调整原型表单元格的大小。

    我的理论是,这个微小的变化导致 xcode 删除了默认设置并使用了我意外创建的新(固定)单元格行高。神奇的代码行反过来覆盖了新的固定大小的“默认”设置。

    当我从头开始重做整个项目时,我特别注意不要以任何方式增加原型单元的大小。我使用了所有相同的约束、代码等。项目构建和显示正确。

    希望其他人可以从这次经历中受益。 xcode IB 很敏感!

    【讨论】:

      猜你喜欢
      • 2018-08-21
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2019-08-21
      • 1970-01-01
      • 2022-08-12
      相关资源
      最近更新 更多