功能需求:根新浪微博個人主頁類似孵滞,下拉拉伸放大圖片下拉刷新(前面文章已解決)抹凳,向上滑動的時候诬滩,導(dǎo)航欄的透明度逐漸增加霹粥,最后變成不透明的。當(dāng)然說起來感覺其實(shí)沒什么疼鸟,不就是滑動改變透明度嗎后控,但是做起來完全不是你想象的那樣。
首先解決透明度的問題空镜,讓導(dǎo)航欄透明起來浩淘,如何做呢捌朴,我剛開始的做法是根據(jù)之前的經(jīng)驗(yàn),直接在導(dǎo)航欄上貼一張透明的圖片馋袜,但是由于項(xiàng)目原本就設(shè)置有藍(lán)色的導(dǎo)航背景了男旗,所以怎么改也改不過來,有種欲哭無淚的感覺欣鳖,于是各種找原因察皇,甚至把基類里面的東西都改了,結(jié)果不盡人意泽台,于是在群里找大神問什荣,終于有大神回話,給出了這篇文章怀酷,簡直救命稻草稻爬,感覺作者的境況跟我類似,于是乎就認(rèn)真看完蜕依,恍然大悟桅锄,原來導(dǎo)航條上竟然還有其他view,簡直坑死人不要命样眠,而且還沒api友瘤。。檐束。所幸作者比較強(qiáng)大辫秧,寫了一個分類,于是我就直接取過來被丧,然后開始設(shè)置
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];
好了盟戏,終于透明了,當(dāng)然甥桂,這句話是丟在-(void)viewWillAppear:(BOOL)animated里面柿究,不然當(dāng)出來的時候你會發(fā)現(xiàn)你的導(dǎo)航條還是藍(lán)色的,只不過稍微一動就變透明了格嘁。笛求。第一步完成了。糕簿。。
然后在scrollerview 的代理里面設(shè)置
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView*)scrollView
{
//下拉隱藏頭部
if(scrollView ==self.zoneTableView) {
constantHeaderView.hidden= scrollView.contentOffset.y> -128?NO:YES;
}
//下拉伸伸圖片
CGFloatyOffset = scrollView.contentOffset.y+64;//如果有導(dǎo)航控制器狡孔,這里應(yīng)該加上導(dǎo)航控制器的高度64
if(yOffset < -IMAGEHEIGHT) {
CGRectframe =_zoomImageView.frame;
frame.origin.y= yOffset;
frame.size.height= -yOffset;
_zoomImageView.frame= frame;
}
//下拉刷新
if(yOffset < -IMAGEHEIGHT-60) {
[selfrefreshNuNuZoneInfo];
}
//下拉改變導(dǎo)航條的顏色
floatal =(yOffset +IMAGEHEIGHT)/IMAGEHEIGHT;
if( al <= 1) {
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];
}else{
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];
}
}
最下面這段就是,其他的可以當(dāng)作沒看見苗膝,之前有說過下拉拉伸圖片和下拉刷新出現(xiàn)實(shí)踐沖突的殃恒,就在這里解決。
下面就開始解決坑爹的玩意兒了,首先离唐,當(dāng)你點(diǎn)擊cell跳轉(zhuǎn)的時候你會發(fā)現(xiàn)其他頁面的病附,你會發(fā)現(xiàn)其他頁面的導(dǎo)航條變色了 0.0你能說什么呢,改亥鬓!
- (void)viewDidDisappear:(BOOL)animated
{
[[BaiduMobStat defaultStat]pageviewEndWithName:@"關(guān)注"];
[superviewDidDisappear:animated];
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];
_topView.hidden=YES;
}
在這個頁面消失的時候 讓導(dǎo)航條不透明完沪,好了,解決了 嵌戈。覆积。。
然后繼續(xù)滑動熟呛,然后跳轉(zhuǎn)宽档,好了下一頁顏色沒變化,但是b殖B鹪!返回來之后怎么又透明了九府?椎瘟??昔逗,為什么呢降传,原來是在viewwill 里面設(shè)置的關(guān)系,真扯淡勾怒,改改婆排!
-(void)viewWillAppear:(BOOL)animated{
CGFloatyOffset =zoneTableView.contentOffset.y+64;
floatal = (yOffset+IMAGEHEIGHT)/IMAGEHEIGHT;
if(al <= 1) {
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];
}else{
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];
}
_topView.hidden=NO;
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];
//開啟定時器
[_myTimer setFireDate:[NSDate distantPast]];
}
好了,直接改成這樣就不用再亂設(shè)置什么東西了笔链,不然當(dāng)你剛滑動到半透明的時候還會出現(xiàn)坑爹的問題段只,改這玩意改了一周多,遇到蛋疼問題不計(jì)其數(shù)鉴扫。赞枕。。
還有
- (void)viewDidAppear:(BOOL)animated
{
[superviewDidAppear:animated];
if(!_isShowCollect) {
CGFloatyOffset =zoneTableView.contentOffset.y;
floatal = (yOffset+IMAGEHEIGHT)/IMAGEHEIGHT;
if(al <= 1) {
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:al]];
}else{
[self.navigationController.navigationBar lt_setBackgroundColor:[LE_BLUE_COLORcolorWithAlphaComponent:1]];
}
_topView.hidden=NO;
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];
[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"touming"]];
}
}
這個是其他頁面遇到的問題坪创,不想說什么了炕婶,我想靜靜,好累好累莱预。柠掂。。
參考例子http://tech.glowing.com/cn/change-uinavigationbar-backgroundcolor-dynamically/