iOS 7 滑動返回那些事兒

來源:互聯網
上載者:User

原文地址:http://weizhe.me/ios-7-back-gesture-sample/

在智能機越來越普及,螢幕越做越大的當下,滑動返回手勢已經成為了一個應用的標配功能,甚至可以說,不能滑動返回是一種反人類的互動體驗。

滑動返回現在大致有以下3種類型: 使用 UISwipeGestureRecognizer 實現,效果為使用者在螢幕中向右輕掃手指,頁面返回。 使用 UIPanGestureRecognizer 實現,效果為使用者在螢幕中向右滑動手指,鬆開後頁面返回。 使用 iOS 7 提供的滑動返回實現,效果為使用者手指從螢幕外由左向右進入螢幕,鬆開後頁面返回。

前兩種實現方式是 iOS 7 推出之前的普遍做法,現在來看,已經過時且體驗不佳,個人推薦使用第三種,優點如下: 良好的互動與動畫效果 系統級的支援,實現簡單,代碼清晰 不會與一些螢幕內的手勢產生衝突

雖然優點很明顯,但是在使用過程中,還是會有一些值得我們注意的問題,接下來我們就一一解決它們。 1. 如何設定自訂的返回按鈕圖片。

如果我們的返回按鈕不需要顯示文字,或者顯示的文字是固定的,可以做到圖片中去,那麼我推薦通過設定 iOS 7 新引入的 backIndicatorImage 來自訂返回按鈕。代碼如下:

1 2 3 UIImage *image = [ UIImage imageNamed : @"nav_back_btn" ] ; [ UINavigationBar appearance ] . backIndicatorImage = image ; [ UINavigationBar appearance ] . backIndicatorTransitionMaskImage = image ;

這樣設定後會發現圖片被渲染成 navigationBar 的 tintColor 的顏色了,要怎樣才能顯示出原始的圖片顏色呢。還需要用到 iOS 7 中 UIImage 的一個新屬性 renderingMode。 我們需要產生一張 renderingMode 為 UIImageRenderingModeAlwaysOriginal 的圖片,讓我們加上這行代碼:

1 2 3 4 UIImage *image = [ UIImage imageNamed : @"nav_back_btn" ] ; image = [ image imageWithRenderingMode :UIImageRenderingModeAlwaysOriginal ] ; [ UINavigationBar appearance ] . backIndicatorImage = image ; [ UINavigationBar appearance ] . backIndicatorTransitionMaskImage = image ;

這樣我們的圖片就能顯示出原始的顏色了。 2. 使用 UIButton 自訂返回按鈕後,如何使用系統的滑動返回。

當我們的返回按鈕上需要顯示不同的文字時,就不能使用 backIndicatorImage 了,我們要自訂一個 UIButton 來產生 UIBarButtonItem,再設定 navigationBar 的 leftBarButtonItem。而如果設定了 leftBarButtonItem 的話,會使系統的滑動返回失效。我們需要在 UIViewController 中加入這行代碼

1 self . navigationController . interactivePopGestureRecognizer . delegate = self ;

運行起來一看,恩…可以滑動返回了。 3. 怎樣讓滑動返回像預設的效果一樣容易觸發。

玩了一會兒你發現,好像哪裡不對勁,怎麼不如之前容易觸發了。

沒錯,當設定了 navigationController.interactivePopGestureRecognizer.delegate 後,雖然滑動返回恢複了,但是它卻有點“殘疾”,具體表現為兩點:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.