我有一个 UIViewController(使用 Swift)
这只是一个简单的项目列表。它是作为一个 UIViewController 实现的,我在其中添加了一个 UITableView。在我的幻灯片菜单实现中通过此代码调用此“项目” View ,并且幻灯片菜单的初始 View 嵌入在 NavigationController 中 - 因此幻灯片菜单中的所有 View 都采用导航 Controller 。项目是像这样调用的幻灯片菜单 View 之一
self.openViewControllerBasedOnIdentifier("Items")
这很好用,我明白了....
然后我在右上角有一个添加按钮,您可以按下它来添加新项目。添加按钮会弹出一个 PageViewController。我使用页面 View 是因为有多个页面与正在添加的项目相关联的详细信息。到目前为止,这也有效,因为我启动了 pageviewcontroller,并且可以在页面之间翻转。
问题在于页面上元素的位置在某些情况下会发生偏移(不一致)。
当我最初显示 PageViewController 的第一页时,我看到了我设计的布局(在左下方)。如果我只是从文本字段中跳出,或者如果我滑动到第二页然后再滑动回第一页,那么我会看到正确的图像。整个画面都跳了起来!
我尝试翻转 Storyboard 中关于 .我什至将大部分绘图移入代码并移出 Storyboard ,以便手动设置约束。这些是我玩过的设置。尝试了很多组合,但现在大部分都关闭了。
这是之前和之后。如何阻止 View 上下跳跃。此外,有趣的是,如果我从第 3 页滑动到第 2 页,则第 2 页将向上移动。如果我继续返回第 1 页,然后滑回第 2 页,则第 2 页返回到正确位置。因此,深入了解我进入第 2 页的方式是不同的布局。从 1 到 2,第 2 页是正确的。从 3 到 2,第 2 页上移。
我无法让布局停留在一个位置。
另一种选择是在页面 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/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |