ios - 表格 View 单元格的自动大小似乎在标准 UIViewController 类中不起作用

标签 ios swift autosize uitableview

为了验证这个问题,我创建了一个测试项目。在项目 Storyboard中,我有两个场景。一个场景基于创建项目时添加到单 View 应用程序的初始 ViewController。第二个场景是通过将 UITableViewController 拖到 Storyboard上创建的。

在这两个场景中,我相信我已经配置了原型(prototype)单元格,因此它应该自动调整大小。当我将初始 ViewController 设置为基于 UIViewController 的那个时,UITableViewCell 无法正确显示/调整大小。 (见下文)

Resize did not work

但是,当我将初始 ViewController 设置为基于 UITableViewController 的那个时,一切正常。 (见下文)

resize works

代码/项目非常简单,我希望有人看到了这个并且可以告诉我为什么当类基于 UIViewController 时 UITableViewCell 的自动大小不能正常工作 对应于 UITableViewController。任何帮助将不胜感激。看来我无法在此处上传项目,因此我将尝试将其上传到其他位置并使用链接更新问题。

回答标准问题

  1. 两个原型(prototype)单元格中都有两个 UILabel
    1. 第一个 UILabel 指定了左、上、右和下约束。
    2. 第二个 UILabel 指定了左、右和下约束。
    3. 两个类都将 estimatedRowHeight 设置为一个数字,将 rowHeight 设置为 UITableViewAutomaticDimension
    4. 所有 UILabel 的 lines 属性都设置为 0
    5. 两个场景中的第一个 UILabel 都将换行设置为自动换行
    6. 两个场景中的第二个 UILabel 的 Line Breaks 设置为 Truncate Tail。

下面是界面生成器中场景的屏幕截图。左边是基于UIViewController,右边是基于UITableViewController

enter image description here

这是我希望的代码链接:Sample Project

最佳答案

所以我找到了似乎可以解决有关原型(prototype)单元自动布局的大量挑战的“ Elixir ”。

在 cellForRowAtIndexPath 函数中,我在返回单元格之前添加了以下代码行:

lobj_NearbyLocationEntry!.layoutIfNeeded()

(lobj_NearbyLocationEntry 是我要返回的单元格变量的名称。)

当我这样做时,我的表格的自动布局工作正常。另外,我发现在使用 UITableViewController 的代码中也存在缺陷。一旦数据加载并且一切看起来都不错,如果您向下滚动然后向上滚动,您将看到几个单元格现在布局不正确。将这行代码放在那个 View Controller 的代码中也解决了那个布局问题。

我希望这能帮助很多坐在那里试图弄清楚为什么他们的应用程序不能正确地自动布局 tableView 单元格的人。 :)

关于ios - 表格 View 单元格的自动大小似乎在标准 UIViewController 类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271614/

相关文章:

swift - 保存后更改 NSUserDefaults 类属性 (Swift)

nsarray - 如何将 CFArray 转换为 Swift 数组?

swift - Startindex swift 3 问题

ios - 具有顶部约束的 NSLabel 自动收缩

c# - GroupBox 自动调整大小

ios - 代码 8 : Can i use Constraints and autosizing both in Single View?

iOS 天蓝色推送通知应用程序角标(Badge)

iphone - 苹果新验证 Controller 的异步部分是必须的吗?

ios - UITabBar setBackgroundImage 不起作用

objective-c - 从不兼容类型'void *'分配给'uint8_t *'(aka'unsigned char *')