天天看點

UINavigationController 自定義轉場動畫(模仿淘寶App跳轉)制作目的實作功能使用方式Demo 裡還添加了一個可以讓普通按鈕變成pop傳回按鈕的 UIButton 父類效果展示

制作目的

  • 想要自定義系統轉場動畫速度
  • 放棄不順暢的 NavigationBar 隐藏消失
  • 幹脆直接幹掉每個頁面的 NavigationBar,在使用 UINavigationController 管理的同時,每個頁面的 NavigationBar 都使用自定義的 UIView, 這樣既定制程度高又可以在不需要 NavigationBar 的頁面無縫對接,包括一些之前 NavigationBar 動畫也可以更輕松的利用自定義的 UIView 的适配動畫來更靈活的實作

實作功能

  • 可以設定一個自己認為舒服的速度進行轉場動畫(該動畫模仿系統轉場動畫效果,如果需要其他轉場動畫可以替換我的 LGFTransition 類,或者修改 LGFTransition 類的代碼)
  • 這個動畫速度同時也舒服的作用到邊緣手勢拖動 POP 傳回上

使用方式

  • pod 'LGFTransition' 或者 LGFTransition
  • 接着在 AppDelegate 中導入頭檔案 UINavigationController+LGFAnimatedTransition.h
#import "UINavigationController+LGFAnimatedTransition.h"

@interface AppDelegate ()

@end

@implementation AppDelegate


 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 在這裡配置是否使用自定義轉場動畫
    // Configure whether to use a custom transition animation here
    [UINavigationController lgf_AnimatedTransitionIsUse:YES];
    //[UINavigationController lgf_AnimatedTransitionIsUse:YES transitionDuration:1.0];
    return YES;
}
           
  • 在 didFinishLaunchingWithOptions 方法中調用 UINavigationController 由分類添加的新方法 lgf_AnimatedTransitionIsUse
  • 傳 NO 或不掉用該方法 使用系統效果, 調用該方法并傳 YES 啟用本效果
  • transitionDuration 動畫想要執行的時間,預設 0.5 秒

Demo 裡還添加了一個可以讓普通按鈕變成pop傳回按鈕的 UIButton 父類

  • 自定義 NavigationBar 上的 UIButton 直接繼承 LGFNavigationBackButton 就可以有pop傳回的功能了

效果展示

繼續閱讀