來源:HelloYeah
下面這個界面有沒有覺得很眼熟。打開你手裡的App仔細觀察,你會發現很多都有實作這個功能。比如美團外賣的首頁子產品,新浪微網誌的個人詳情頁面。要怎麼樣才能快速的實作這個功能呢!那下面由筆者來告訴你如何三行代碼,內建這個功能。。。

原理介紹:
要想把一個view設計成透明的我們一下子就會想到兩種方案,設定view的alpha值為0,或者設定view的backgroundColor為clearColor.但是UINavigationBar是一個比較特殊的視圖,它是沒有alpha屬性的,那我們可以設定opaque(不透明度)為NO,上代碼試一試
//方案一:不透明度為NO navigationBar.opaque = NO; //方案二:背景顔色為clearColor navigationBar.backgroudcolor = [UIColor clearColor];
結果,然并卵,完全沒用。這時候該怎麼辦呢?這時候我們就得來看看UINavigationBar這個視圖的結構了,如下圖。
現在筆者教大家一個小技巧。請看下面代碼:
//設定一張空的圖檔 [self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init]forBarMetrics:UIBarMetricsDefault]; //清除邊框,設定一張空的圖檔 [self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init]];
這時候再打開項目層次圖,你會有驚人的發現
對比一下,你會發現隻剩兩層了。不要問為什麼,這都是系統幫你做的。。。當你設定了背景圖檔的時候,就會出現這樣的結果。
知道了上述的原理,這就好辦了,現在隻要監聽,控制器内部的scrollView 的滾動,就可以實作導覽列漸漸透明的效果了。
業務邏輯,功能實作其實都不是很難。但是也需要花費一些時間,筆者在這給大家分享一下自己寫的一個分類。導入這個分類,你隻需要調用兩三個接口就可以實作這個功能了。
首先看一下分類提供的接口
分類介紹
我寫的這個分類不僅可以在系統的UITableViewController 和UICollectionViewController中使用,(系統的隻需調用分類中兩個方法即可)。而且當你的UIViewController中有1個或多個可以垂直滾動的scrollView都可以使用。(需要告訴控制器需要監聽哪個scrollView的滾動,即設定keyScrollView).
重要的是,這個分類的代碼侵入性非常低,使用簡單友善。當不需要這些功能的時候,你隻需要注釋掉幾行代碼即可。對原控制器沒有任何影響,無需更改控制器内的其他代碼結構。
分類代碼
下面這個效果圖是系統的UITableViewController,以下是效果圖和代碼
下面這個效果圖是一個ViewController中含有自己建立的一個CollectionView.
程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!
本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/5447821.html,如需轉載請自行聯系原作者