[TOC]
目錄
自定義導航欄按鈕
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIButton * leftBtn = [UIButton buttonWithType:UIButtonTypeSystem];leftBtn.frame = CGRectMake(0, 0, 25,25);
[leftBtn setBackgroundImage:[UIImage imageNamed:@"nav_back"] forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(leftBarBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
}
- (void)leftBarBtnClicked:(UIButton *)btn{
[self.navigationController popViewControllerAnimated:YES];
}
調整導航欄按鈕位置
//創(chuàng)建返回按鈕
UIButton * leftBtn = [UIButton buttonWithType:UIButtonTypeSystem];
leftBtn.frame = CGRectMake(0, 0, 25,25);
[leftBtn setBackgroundImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal];[leftBtn addTarget:self action:@selector(leftBarBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem * leftBarBtn = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
//創(chuàng)建UIBarButtonSystemItemFixedSpace
UIBarButtonItem * spaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
//將寬度設為負值
spaceItem.width = -15;
//將兩個BarButtonItem都返回給NavigationItem
self.navigationItem.leftBarButtonItems = @[spaceItem,leftBarBtn];
自定義返回按鈕后滑動返回手勢失效
<UIGestureRecognizerDelegate>
self.navigationController.interactivePopGestureRecognizer.delegate = self;
全屏滑動返回手勢
<UIGestureRecognizerDelegate>
- (void)viewDidLoad{
[super viewDidLoad];
// 獲取系統(tǒng)自帶滑動手勢的target對象
id target = self.interactivePopGestureRecognizer.delegate;
// 創(chuàng)建全屏滑動手勢揭蜒,調用系統(tǒng)自帶滑動手勢的target的action方法
// handleNavigationTransition系統(tǒng)滑動方法 不會因為私有API被拒
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
// 設置手勢代理,攔截手勢觸發(fā)
pan.delegate = self;
// 給導航控制器的view添加全屏滑動手勢
[self.view addGestureRecognizer:pan];
// 禁止使用系統(tǒng)自帶的滑動手勢
self.interactivePopGestureRecognizer.enabled = NO;
}
導航欄NavigationBar切換動畫
1. FDFullscreenPopGesture
FDFullscreenPopGesture簡單粗暴好用
2.KLTAnimateNav
KLTAnimateNav寫的不錯,內容比較簡單有學習價值