在 viewDidLoad() 中使用 Content Offset 时在 StoryBoard 中使用 UITableView 原型单元格时出现问题

Issue working with UITableView prototype cell in StoryBoard when using Content Offset in viewDidLoad()

我有一个 UIViewController,其中包含一个 UITableView 和一个 UISearchBar。这两个控件在视图层次结构中处于同一级别。

搜索栏覆盖 Table 视图的第一个单元格,因此在 viewDidLoad() 中,我将 Table 视图的内容插入调整为 Y = 64(状态为 20 bar + 44 用于搜索栏)。

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.contentInset = UIEdgeInsets(top: 64, left: 0, bottom: 0, right: 0)
}

运行时一切正常。

问题是当我在设计时尝试使用原型单元时,它被搜索栏覆盖,如下所示:

这里的正确方法是什么?

您完全可以在故事板中执行此操作。

  1. 移除约束 Table View.top = top
  2. 添加一个新约束,将 table 视图的顶部连接到搜索栏的底部

您可能需要调整 table 视图的原点和高度,因为它的新 origin.y 将是搜索栏的 origin.y + size.height

是的 - 硬编码与情节提要中的事物相对应的幻数是个坏主意。