QMUICustomNavigationBarTransitionDelegate

@protocol QMUICustomNavigationBarTransitionDelegate <NSObject>

与 QMUINavigationController 控制 navigationBar 显隐/动画相关的方法

  • 设置每个界面导航栏的显示/隐藏,为了减少对项目的侵入性,默认不开启这个接口的功能,只有当 shouldCustomizeNavigationBarTransitionIfHideable 返回 YES 时才会开启此功能。如果需要全局开启,那么就在 Controller 基类里面返回 YES;如果是老项目并不想全局使用此功能,那么则可以在单独的界面里面开启。

    Declaration

    Objective-C

    - (BOOL)preferredNavigationBarHidden;

    Swift

    optional func preferredNavigationBarHidden() -> Bool
  • 当切换界面时,如果不同界面导航栏的显隐状态不同,可以通过 shouldCustomizeNavigationBarTransitionIfHideable 设置是否需要接管导航栏的显示和隐藏。从而不需要在各自的界面的 viewWillAppear 和 viewWillDisappear 里面去管理导航栏的状态。

    See

    UINavigationController+NavigationBarTransition.h

    See

    preferredNavigationBarHidden

    Declaration

    Objective-C

    - (BOOL)shouldCustomizeNavigationBarTransitionIfHideable;

    Swift

    optional func shouldCustomizeNavigationBarTransitionIfHideable() -> Bool
  • 设置导航栏转场的时候是否需要使用自定义的 push / pop transition 效果。
    如果前后两个界面 controller 返回的 key 不一致,那么则说明需要自定义。
    不实现这个方法,或者实现了但返回 nil,都视为希望使用默认样式。

    Warning

    四个老接口 shouldCustomNavigationBarTransitionxxx 已经废弃不建议使用,不过还是会支持,建议都是用新接口

    See

    UINavigationController+NavigationBarTransition.h

    See

    配置表有开关 AutomaticCustomNavigationBarTransitionStyle 支持自动判断样式,无需实现这个方法

    Declaration

    Objective-C

    - (nullable NSString *)customNavigationBarTransitionKey;

    Swift

    optional func customNavigationBarTransitionKey() -> String?
  • 自定义navBar效果过程中UINavigationController的containerView的背景色

    See

    UINavigationController+NavigationBarTransition.h

    Declaration

    Objective-C

    - (nullable UIColor *)containerViewBackgroundColorWhenTransitioning;

    Swift

    optional func containerViewBackgroundColorWhenTransitioning() -> UIColor?