菜鸟教程小白 发表于 2022-12-12 22:46:12

ios - 为什么我的 UINavigationBar 不会动画?


                                            <p><p>我正在尝试让我的应用程序正常工作,以便在 Root ViewController 中没有导航栏可见,并且当我将另一个 ViewController 推送到我的堆栈上时(使用 Storyboard segues),导航栏动画进入 View (淡入在 View 滑入 View 时查看)。</p>

<p>按照其他 SO 文章中的建议,我的根 Controller 中有以下内容:</p>

<pre><code>- (void)viewWillAppear:(BOOL)animated
{
    ;
    ;
}

- (void)viewWillDisappear:(BOOL)animated
{
    ;
    ;
}
</code></pre>

<p>导航栏确实出现/消失了,只是没有动画(淡入/淡出)。 </p>

<p>我使用的是黑色半透明条,但我尝试了所有类型的条,没有任何区别。这是在 iPhone 应用程序上。我也尝试过模拟器和非模拟器。有什么想法吗?</p>

<p>我现在制作了一段视频,展示了我的应用正在做什么:</p>

<p> <a href="http://youtu.be/B9fuCc2Jqtg" rel="noreferrer noopener nofollow">http://youtu.be/B9fuCc2Jqtg</a> </p>

<p>所以为了清楚起见,它正在正确地出现和消失,但它是突然发生的。我正在尝试让它在此过渡期间淡入/淡出。</p>

<p>我现在在 Xcode 4/iOS 5.1 中添加了一个指向我的演示项目的链接:</p>

<p> <a href="https://www.dropbox.com/sh/mwsgjyup4iumy2r/QNN7xkHXSt" rel="noreferrer noopener nofollow">https://www.dropbox.com/sh/mwsgjyup4iumy2r/QNN7xkHXSt</a> </p>

<p><strong>更新/回答:</strong> 最终证明我的代码是“有效的”,因为它正在执行 Apple 的预期,动画导航栏滑入 View 。我的错误印象是它也应该同时将导航栏从不可见淡化为可见,但这不是它的工作原理。 </p>

<p>感谢@E。 Lüders 的动画代码,展示了如何按照我的意图进行操作。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我刚刚实现了这个测试代码,它工作正常。在我的 Storyboard 中,导航栏是可见的。</p>

<pre><code>//ViewController.h
#import &lt;UIKit/UIKit.h&gt;
@interface ViewController : UIViewController
@end


//ViewController.m
#import &#34;ViewController.h&#34;

@implementation ViewController

- (void)viewWillAppear:(BOOL)animated
{
    ;
    ;
}

- (void)viewWillDisappear:(BOOL)animated
{
    ;
    ;
}

- (void)viewDidLoad
{
    ;

    // Hide navigationbar on view load
    ;
    // Do any additional setup after loading the view, typically from a nib.
}

@end


//////////////////////////////////////////////////////////////
// This controller gets pushed                              //
//////////////////////////////////////////////////////////////

//ViewController2.h
#import &lt;UIKit/UIKit.h&gt;
@interface ViewController2 : UIViewController
@end


//ViewController2.m
#import &#34;ViewController2.h&#34;
@implementation ViewController2
@end
</code></pre>

<p>希望这会有所帮助。</p>

<hr/>

<p><strong>编辑:</strong></p>

<p>如果您想在导航栏上显示淡入/淡出效果,请将上面的代码更改为:</p>

<pre><code>- (void)viewWillAppear:(BOOL)animated
{
    ;
    ;

    [UIView animateWithDuration:0.5f animations:^{
      self.navigationController.navigationBar.alpha = 0.0f;
    } completion:^(BOOL finished) {}];
}

- (void)viewWillDisappear:(BOOL)animated
{
    ;
    self.navigationController.navigationBar.alpha = 0.0f;
    ;

    [UIView animateWithDuration:0.5f animations:^{
      self.navigationController.navigationBar.alpha = 1.0f;
    } completion:^(BOOL finished) {}];
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 为什么我的 UINavigationBar 不会动画?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/12275887/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/12275887/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 为什么我的 UINavigationBar 不会动画?