【问题标题】:UITableView embedded in other view has wrong position of section header嵌入在其他视图中的 UITableView 的节标题位置错误
【发布时间】:2014-06-19 06:20:31
【问题描述】:

我在另一个视图中嵌入了一个 UITableView,如下所示:

导航控制器是模态显示的,所以它的布局应该是全屏的,不依赖于故事板的任何其他部分。 如果已经使用固定的自动布局约束设置了配置文件视图的上部,如下所示:

  • 图像视图的顶部布局指南(灰色):20pt
  • “交易”标签的图像视图:20pt
  • “交易”标签到容器视图:20pt
  • 容器视图到底部布局指南、前导和尾随空格的距离:全部为 0pt。

所以基本上,当屏幕变大时,容器视图应该填满剩余空间。

在容器视图中,我嵌入了一个表视图(包括相应的控制器)。为了使问题更明显,我给容器视图一个绿色背景,给表格视图一个蓝色背景(这就是为什么部分标题略带蓝色的原因)。当然,我希望表格视图填满整个容器视图。但这只是部分发生:

所以表格视图确实填充了完整的容器视图(表格视图的背景颜色为蓝色),但节标题位置较低。如果我向下滚动,部分标题保持在同一位置,但单元格向上移动并显示在其上方:

我已经尝试检查和取消选中表格视图控制器的“扩展边缘”复选框,该复选框控制它是否扩展“在顶部栏下”、“在底部栏下”和“在不透明栏下”,但这没有帮助。看起来好像表格视图为导航栏和状态栏留出了空间,但它不应该而且我不明白如何让它正确地布置节标题和单元格。

任何想法为什么会这样以及如何解决它?

【问题讨论】:

  • 您的表格视图中的 Title---Title---Detail 是什么?那是细胞的一部分,还是别的什么?
  • 这只是我在完成的应用程序中实际使用的另一种单元格类型。带有 title-title-detail 的那个是实际保存数据的那个,但是由于我想在没有任何实际数据的情况下制作屏幕截图,所以我很快引入了第二种空单元格类型。 ;-) 无论我使用什么细胞类型,问题都存在。
  • 好吧,我就是这么想的。我尝试了你的一般设置,我看到了同样的奇怪行为。这看起来像是容器视图在 IB 中的工作方式中的一个错误。我正在检查其他一些想法,如果我发现任何有用的东西,我会回复你。
  • 这与 IB 中的容器视图无关,因为我通过使用自定义容器视图 api 在代码中添加表视图控制器得到了相同的行为。

标签: ios objective-c uitableview autolayout uistoryboard


【解决方案1】:

这可以通过取消选中 IB 中包含容器视图的控制器而不是表视图控制器的“顶部栏下方”框来解决。您应该这样做似乎不正确,因为您会认为在导航栏下扩展主视图(在容器控制器中)不会使嵌入式表格视图的行为方式与它的行为方式相同。

【讨论】:

  • 哇,这没有任何意义,但它有效!非常感谢。我尝试激活包含视图控制器中的“Under Top Bars”复选框,但没有考虑反过来尝试...
  • 当我这样做时,“差距”问题就消失了。然而,在这种情况下,我的导航栏和状态栏变成了奇怪的灰色,而不是取消选中 在顶部栏 之前的白色。如果我关闭导航栏的 半透明 选项,问题就会消失,但这不是正确的解决方案。
  • @Mitry,听起来您下面可能有另一个通过半透明导航栏显示的暗视图。带有容器视图的控制器的视图是否变暗?
  • @rdelmar,是的,看起来是这样,但下面没有视图。我专门重新创建了视图以确保这一点。可能是主屏幕?问题是在导航和状态栏下添加纯白色视图可以解决问题。但我不确定它是否合法。
【解决方案2】:

禁用包含视图的“调整滚动视图插图”也有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多