OGeek|极客世界-中国程序员成长平台

标题: ios - 导航 Controller 内的 pageviewcontroller 导致布局问题 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-11 19:28
标题: ios - 导航 Controller 内的 pageviewcontroller 导致布局问题

我有一个 UIViewController(使用 Swift)

这只是一个简单的项目列表。它是作为一个 UIViewController 实现的,我在其中添加了一个 UITableView。在我的幻灯片菜单实现中通过此代码调用此“项目” View ,并且幻灯片菜单的初始 View 嵌入在 NavigationController 中 - 因此幻灯片菜单中的所有 View 都采用导航 Controller 。项目是像这样调用的幻灯片菜单 View 之一

self.openViewControllerBasedOnIdentifier("Items")

这很好用,我明白了....

Initial Lists view from slider menu

然后我在右上角有一个添加按钮,您可以按下它来添加新项目。添加按钮会弹出一个 PageViewController。我使用页面 View 是因为有多个页面与正在添加的项目相关联的详细信息。到目前为止,这也有效,因为我启动了 pageviewcontroller,并且可以在页面之间翻转。

问题在于页面上元素的位置在某些情况下会发生偏移(不一致)。

当我最初显示 PageViewController 的第一页时,我看到了我设计的布局(在左下方)。如果我只是从文本字段中跳出,或者如果我滑动到第二页然后再滑动回第一页,那么我会看到正确的图像。整个画面都跳了起来!

我尝试翻转 Storyboard 中关于 .我什至将大部分绘图移入代码并移出 Storyboard ,以便手动设置约束。这些是我玩过的设置。尝试了很多组合,但现在大部分都关闭了。

enter image description here

这是之前和之后。如何阻止 View 上下跳跃。此外,有趣的是,如果我从第 3 页滑动到第 2 页,则第 2 页将向上移动。如果我继续返回第 1 页,然后滑回第 2 页,则第 2 页返回到正确位置。因此,深入了解我进入第 2 页的方式是不同的布局。从 1 到 2,第 2 页是正确的。从 3 到 2,第 2 页上移。

enter image description here

我无法让布局停留在一个位置。

另一种选择是在页面 View Controller 中关闭 NavigationController 并在没有它的情况下进行处理。

所以...

1) 我怎样才能停止跳跃 - 最好的情况

2) 如何在 pageviewcontroller 启动时关闭导航 Controller - 第二个选项

我的 pageviewcontroller 的页面是通过此代码调用的

 instantiateViewController(withIdentifier: "itemDetail\(num)ViewController")

其中 'num' 是 1,2 或 3。使用索引数组和 viewControllerBefore 以及 viewControllerAfter 方法。分页本身工作正常。

谢谢



Best Answer-推荐答案


这并没有回答如何使 Storyboard工作的问题。这仍然是一个谜。但是,通过执行以下操作,我能够解决移动布局的奇怪行为。

我从 Storyboard 中删除了所有绘图并将所有内容放入代码中。比如我定义了一个容器 View ...

// The container
let containerView: UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.white
    view.translatesAutoresizingMaskIntoConstraints = false
    view.layer.masksToBounds = true
    return view
}()

然后我将容器相对于 UIViewController 的 View 放置

    view.addSubview(containerView)

    containerView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 0).isActive = true
    containerView.topAnchor.constraint(equalTo: view.topAnchor, constant: 155).isActive = true
    containerView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: 0).isActive = true
    containerView.heightAnchor.constraint(equalTo: view.heightAnchor, constant: -155).isActive = true

同样,我在代码中定义了所有其他控件,然后将它们添加到 containerView subview 中,然后全部相对于 containerView。

当我在 PageViewController 的页面之间滑动时,一切都保持在原位

关于ios - 导航 Controller 内的 pageviewcontroller 导致布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359498/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) Powered by Discuz! X3.4