菜鸟教程小白 发表于 2022-12-11 19:28:52

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


                                            <p><p>我有一个 UIViewController(使用 Swift)</p>

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

<pre><code>self.openViewControllerBasedOnIdentifier(&#34;Items&#34;)
</code></pre>

<p>这很好用,我明白了....</p>

<p> <a href="/image/EjM7P.jpg" rel="noreferrer noopener nofollow"><img src="/image/EjM7P.jpg" alt="Initial Lists view from slider menu"/></a> </p>

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

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

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

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

<p> <a href="/image/pE5iJ.jpg" rel="noreferrer noopener nofollow"><img src="/image/pE5iJ.jpg" alt="enter image description here"/></a> </p>

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

<p> <a href="/image/nw06h.jpg" rel="noreferrer noopener nofollow"><img src="/image/nw06h.jpg" alt="enter image description here"/></a> </p>

<p>我无法让布局停留在一个位置。</p>

<p>另一种选择是在页面 ViewController 中关闭 NavigationController 并在没有它的情况下进行处理。</p>

<p>所以...</p>

<p>1) 我怎样才能停止跳跃 - <strong>最好的情况</strong></p>

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

<p>我的 pageviewcontroller 的页面是通过此代码调用的</p>

<pre><code> instantiateViewController(withIdentifier: &#34;itemDetail\(num)ViewController&#34;)
</code></pre>

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

<p>谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这并没有回答如何使 Storyboard工作的问题。这仍然是一个谜。但是,通过执行以下操作,我能够解决移动布局的奇怪行为。</p>

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

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

<p>然后我将容器相对于 UIViewController 的 View 放置</p>

<pre><code>    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
</code></pre>

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

<p>当我在 PageViewController 的页面之间滑动时,一切都保持在原位</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 导航 Controller 内的 pageviewcontroller 导致布局问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43359498/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43359498/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 导航 Controller 内的 pageviewcontroller 导致布局问题