为了验证这个问题,我创建了一个测试项目。在项目 Storyboard中,我有两个场景。一个场景基于创建项目时添加到单 View 应用程序的初始 ViewController
。第二个场景是通过将 UITableViewController
拖到 Storyboard上创建的。
在这两个场景中,我相信我已经配置了原型(prototype)单元格,因此它应该自动调整大小。当我将初始 ViewController
设置为基于 UIViewController 的那个时,UITableViewCell
无法正确显示/调整大小。 (见下文)
但是,当我将初始 ViewController
设置为基于 UITableViewController
的那个时,一切正常。 (见下文)
代码/项目非常简单,我希望有人看到了这个并且可以告诉我为什么当类基于 UIViewController 时
对应于 UITableViewCell
的自动大小不能正常工作UITableViewController
。任何帮助将不胜感激。看来我无法在此处上传项目,因此我将尝试将其上传到其他位置并使用链接更新问题。
回答标准问题
- 两个原型(prototype)单元格中都有两个
UILabel
- 第一个
UILabel
指定了左、上、右和下约束。 - 第二个
UILabel
指定了左、右和下约束。 - 两个类都将 estimatedRowHeight 设置为一个数字,将 rowHeight 设置为
UITableViewAutomaticDimension
- 所有
UILabel
的 lines 属性都设置为 0 - 两个场景中的第一个
UILabel
都将换行设置为自动换行 - 两个场景中的第二个
UILabel
的 Line Breaks 设置为 Truncate Tail。
- 第一个
下面是界面生成器中场景的屏幕截图。左边是基于UIViewController
,右边是基于UITableViewController
这是我希望的代码链接:Sample Project
最佳答案
所以我找到了似乎可以解决有关原型(prototype)单元自动布局的大量挑战的“ Elixir ”。
在 cellForRowAtIndexPath 函数中,我在返回单元格之前添加了以下代码行:
lobj_NearbyLocationEntry!.layoutIfNeeded()
(lobj_NearbyLocationEntry 是我要返回的单元格变量的名称。)
当我这样做时,我的表格的自动布局工作正常。另外,我发现在使用 UITableViewController 的代码中也存在缺陷。一旦数据加载并且一切看起来都不错,如果您向下滚动然后向上滚动,您将看到几个单元格现在布局不正确。将这行代码放在那个 View Controller 的代码中也解决了那个布局问题。
我希望这能帮助很多坐在那里试图弄清楚为什么他们的应用程序不能正确地自动布局 tableView 单元格的人。 :)
关于ios - 表格 View 单元格的自动大小似乎在标准 UIViewController 类中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30271614/