gpt4 book ai didi

ios - 导航 Controller 内的 pageviewcontroller 导致布局问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:11:33 25 4
gpt4 key购买 nike

我有一个 UIViewController(使用 Swift)

它只是一个简单的项目列表。它作为一个 UIViewController 实现,我向其中添加了一个 UITableView。这个“项目” View 是通过我的滑动菜单实现中的这段代码调用的,并且滑动菜单的初始 View 嵌入在 NavigationController 中 - 因此滑动菜单中的所有 View 都采用导航 Controller 。 Items 是像这样调用的那些幻灯片菜单 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 方法。分页本身工作正常。

谢谢

最佳答案

这并没有回答如何让 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com