PBNavigationBar 版本 1.0.4

PBNavigationBar 版本 1.0.4

Jpache 维护。



PBNavigationBar 版本 1.0.4

PBNavigationBar

PBNavigationBar 允许您的 App 的 `` 具有完美的转场动画。它完全使用 Category 实现,不会对您的业务代码造成入侵,您可以 无感知 地使用它,只需像往常一样在 `<-viewWillAppear:`> 中设置您想要的 `` 样式。

使用 CocoaPods 安装

target 'TargetName' do
	pod 'PBNavigationBar'
end

使用

当您的前后两级页面的 `` 颜色不同时,您可以像往常一样设置颜色。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self setNavBarBackgroundImage:nil shadowImage:nil];
    /*
     或者使用系统的设置方法
     [self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
     [self.navigationController.navigationBar setShadowImage:nil];
     */
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
}

然后在 `` 中写入下面的方法,并返回 YES,就可以获得这种完美的 `` 转场动画。

- (BOOL)useDifferentNavigationBar {
    return YES;
}

当只需要使用系统默认的转场方式时,什么都不需要做,也不需要在 `<-useDifferentNavigationBar>` 中返回 NO,因为它默认就是返回 NO 的。

效果

如果 App 对 `` 的处理不到位,有时它的转场动画会很糟糕,比如从有颜色的返回到白色的时候,`` 会突然变成白色,完全没有动画过度效果可言。看过很多 App 和网上很多 "一次性解决 UINavigationBar 所有问题" 类似的文章之后仍然没有找到很好的解决方案,便想到了细节做足的微信,之前有注意到微信的红包和web页返回的时候会让人看得很舒服,然后就开始了寻找方案之路...

先来看一下微信在返回时 `` 的两种返回状态:

这是正常的返回动画。

这是红包、web页面等需要特殊处理的页面的返回动画(这个特殊处理就要看自身的业务需求了)。

特殊处理

尝试了各种方法之后,终于实现了类似的效果。

简单说一下效果,就是正常返回保持不变,需要处理的返回,返回时,上下两个页面的 `` 分别附着在各自的页面上,但只是背景颜色和图片,对于 ``,还在原来的位置不动,只是进行系统那种透明度的转变来达到消失和出现。

下面是使用 PBNavigationBar 之后的效果: