[轉]iOS開發之自定義導航欄返回按鈕右滑返回手勢失效的解決

當咱們使用代碼或者用storyboard來建立一個新的控制器的時候~咱們不多注意導航欄的leftItem~由於正常狀況下~push到下一個界面的leftItem就是上一個界面的self.title~而且它也就是一個返回的功能~因此~咱們不多去在乎這些~但當咱們有些需求~須要自定義leftItem的時候~那麼問題就來了~程序員

  • 問題一:怎麼自定義leftItemxcode

  • 問題二:爲何系統自帶的右滑返回手勢失效,怎麼解決這個失效問題ide

1.怎麼自定義leftItemspa

其實~這個東西嘛~說簡單也是很簡單的~由於~咱們很明確的知道~左導航欄就一個功能~那就是返回上一個界面~很顯然~是須要用戶交互的~必用按鈕~
說多了都是廢話~直接上代碼~
//自定義一個按鈕
code

UIButton  *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [leftBtn setTitle:@"返回" forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(backLastView) forControlEvents:UIControlEventTouchUpInside];
leftBtn.frame = CGRectMake(0, 0, 60, 40);
[leftBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
//將leftItem設置爲自定義按鈕
UIBarButtonItem  *leftItem =[[UIBarButtonItem alloc]initWithCustomView: leftBtn];
self.navigationItem.leftBarButtonItem = leftItem;

//按鈕點擊事件 返回上一個界面
orm

- (void)backLastView{
    [self.navigationController popViewControllerAnimated:YES];
}

須要注意的是~xcode自動從6.0以後~leftItem距左屏幕邊距有16個像素點~這樣會致使在視覺上會感受有點偏右~不算美觀~然而對於大多數處女座的程序員來講~這明顯是不能讓人去接受的~解決辦法有不少~在這裏提供一個最爲方便的方法~設置一下按鈕的contentEdgeInsets(文字)imageEdgeInsets(圖片)屬性便可~如:leftButton.contentEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0);事件

3.怎麼解決這個失效問題
其實很簡單很簡單~只須要添加下面這一句代碼便可
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;圖片

相關文章
相關標籤/搜索