最近在做項目,UI要求做一個導航欄隨著ScrollView滾動而漸變的效果,所以開始研究怎么最簡潔的方法來實現(xiàn)這個效果.到最后發(fā)現(xiàn)幾句代碼就能搞定,現(xiàn)在分享給大家,我用的是Swift3.0.用OC的可以按照寫法轉換成OC語句即可
1.首先需要將導航欄設置成透明
//在ViewDidLoad中設置導航欄需要顯示的主題顏色
self.navigationController?.navigationBar.barTintColor = RGBA(R: 255, G: 90, B: 84, A: 1)
//將navigationBar的第一個View,透明度設置成0,這樣就可以實現(xiàn)導航欄透明,
//第一個View指的是導航欄+信息欄的64px的View
self.navigationController?.navigationBar.subviews[0].alpha = 0
2.在滾動的時候計算需要顯示的透明度
//實現(xiàn)ScrollView的代理方法,TableViewS自繼承ScrollView,
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//獲取ScrollView的偏移量y
let offsetY = scrollView.contentOffset.y
print(offsetY)
//自己設置需要滾動到哪里可以完全顯示導航欄
let ScrollValue:CGFloat = 64.0
//將偏移量除以需要滾動的量,可以得到需要顯示的透明度
var alpha = offsetY / ScrollValue
if alpha >= 1{
alpha = 1
}
//將透明度賦值給第一個View即可
self.navigationController?.navigationBar.subviews[0].alpha = alpha
}
上面幾句代碼即可完成導航欄的漸變效果.有興趣的可以采取這種方法試一試.
px:如果有問題可以回復我一起討論