【问题标题】:IOS PageViewController extra white space at bottomIOS PageViewController 底部有额外的空白
【发布时间】:2022-01-09 13:58:18
【问题描述】:

我有一个带有 2 个视图的父视图控制器。在顶部,我有视图,其中包含页面视图控制器,在底部,我有其他视图,显示不同的内容。

一切正常,除了在第一个视图(页面视图控制器)和第二个视图上方获得空白。

我为约束添加了以下代码,

let views:[String: Any] = ["pageView": pageViewController.view!]
articleContentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat:     "H:|-0-[pageView]-0-|",
                                                                     options: NSLayoutConstraint.FormatOptions(rawValue: 0),
                                                                     metrics: nil, views: views))

    articleContentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[pageView]-0-|",
                                                                     options: NSLayoutConstraint.FormatOptions(rawValue: 0),
                                                                     metrics: nil, views: views))

如果我删除此代码,我的页面视图控制器会超出其视图并占据全屏。 任何建议 非常感谢。

【问题讨论】:

  • 你尝试过 Xcode 中的 Layout Inspector 吗?它会清楚地显示您之间是否有任何不需要的视图以及在运行时应用了哪些约束。
  • 是的,做得很好
  • 如何组织这两个视图?这不是一个表格视图吗?如果是这样,这可能是答案(也是正确的问题):stackoverflow.com/questions/69461934/…

标签: ios swift storyboard uipageviewcontroller


【解决方案1】:

“空白空间”几乎可以肯定是页面视图控制器的内置UIPageControl

这是一个简单的示例,有两个视图...顶视图添加了一个 UIPageViewController 作为子视图控制器,并且底部视图的顶部被限制为顶部视图的底部:

注意“空白”...

使用 Xcode 的 Debug View Hierarchy,原因很明显:

所以,如果我在顶视图上设置背景颜色,我会看到:

它似乎是空白区域,因为默认的页面控件使用有色白点 - 所以我们在白色背景上看不到任何东西。


编辑

如果您的控制器的 DataSource 实现了这两个可选方法,则会自动显示 PageControl:

optional func presentationCount(for pageViewController: UIPageViewController) -> Int

optional func presentationIndex(for pageViewController: UIPageViewController) -> Int

删除一个或两个将自动删除页面控件。

【讨论】:

  • 我可以知道,如何删除默认控件?
  • @JayVyas - 请参阅我的答案底部的编辑
  • 太棒了,非常感谢