菜鸟教程小白 发表于 2022-12-12 23:01:52

ios - 带有提示的 View Controller 的 UINavigationController 动画


                                            <p><p>我正在实现一个使用 UINavigationController 的应用程序。它目前显示 3 个 View ,每个 View 都有一个 <code>UITableViewController</code>。显示的第一个 View 只有一个<code>title</code>,而另外两个有一个<code>title</code> 和<code>prompt</code>。所有的转场都是在 Storyboard 中创建的,这相当简单:<a href="/image/TiUsb.png" rel="noreferrer noopener nofollow"><img src="/image/TiUsb.png" alt="Storyboard of UINavigationController"/></a> <br/>
问题:一旦我从一个有提示的 View 中动画离开,动画就会出现故障 - 标题(有时是后退按钮)从底部“飞入”,而不是从右侧“飞入”。</p>

<p><strong>示例:</strong> <a href="https://youtu.be/N-K8piEJ1aY" rel="noreferrer noopener nofollow">https://youtu.be/N-K8piEJ1aY</a> (开启慢速动画录制)<br/>
在这里您可以看到从第一个 View 到第二个 View 的动画效果很好,但是从第二个 View 到第三个 View 的动画有问题。动画返回作品。</p>

<p>这个问题似乎类似于 <a href="https://stackoverflow.com/questions/30508975/weird-animations-when-changing-navigationitem-prompt" rel="noreferrer noopener nofollow">Weird animations when changing NavigationItem prompt</a> .该线程中的结论是,这仅发生在 iOS 7 上,但我在 iOS 10.0/10.1 上运行。模拟器和真机都会出现这个问题。</p>

<p>有什么想法吗?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我找到的唯一解决方案是一个绝对黑客,其灵感来自于由 Catalina T 启发的绝对黑客。在 <a href="https://stackoverflow.com/questions/29053198/uinavigationbar-overlaps-uitableview-when-programatically-setting-prompt" rel="noreferrer noopener nofollow">this post</a> 上:</p>

<p>在出现的 VC 上的 <code>viewWillAppear:</code> 中或在导航 Controller 上调用 <code>pushViewController:animated:</code> 之后(或者我在调用 <code>performSegueWithIdentifier:sender 之后猜测) :</code> 添加如下代码:</p>

<h3>ObjC</h3>

<pre><code>// This is a hack that&#39;s because UINavigationBar with prompts is broken
navigationController.navigationBarHidden = YES;
navigationController.navigationBarHidden = NO;
</code></pre>

<h3> swift </h3>

<pre><code>// This is a hack that&#39;s because UINavigationBar with prompts is broken
navigationController.isNavigationBarHidden = true
navigationController.isNavigationBarHidden = false
</code></pre>

<p>其中 <code>navigationController</code> 是对执行所有推送的 <code>UINavigationController</code> 的引用(例如 <code>viewController.navigationController</code>)</p>

<p>编辑:现在似乎在弹出和重新推送 VC 时会出现其他奇怪的动画,所以这个答案不是一个真正的解决方案。留下它以帮助其他人进入类似的兔子洞。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 带有提示的 ViewController 的 UINavigationController 动画,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/40938271/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/40938271/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 带有提示的 View Controller 的 UINavigationController 动画