前言:最近做了很多項(xiàng)目發(fā)現(xiàn)現(xiàn)在個(gè)人中心上部都喜歡放一張大的圖片作為背景戴陡,或者將頭像的 放大模糊版作為背景(和前者原理差不多只是加了個(gè)磨砂玻璃或者是是直接對(duì)圖像處理模糊化)梯投。
對(duì)于這樣的個(gè)人中心命辖,就有兩個(gè)效果使我們要考慮的:
第一像下拉的時(shí)候會(huì)漏出上邊的背景色。(見(jiàn)過(guò)有人放一個(gè)比較大的圖片y坐標(biāo)定為負(fù)數(shù)分蓖,但是個(gè)人感覺(jué)不好)
第二是向上拉時(shí)尔艇,title文字直接出現(xiàn)在頁(yè)面上,很有違和感么鹤。
處理他的方法也很簡(jiǎn)單终娃。只要用到UIScrollView的delegate就可以了
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(scrollView.contentOffset.y > _contentOffSet.y){
_navBG.alpha +=0.1;
if(_navBG.alpha >=1){
_navBG.alpha = 1;
}
}else{
_navBG.alpha -= 0.1;
if(_navBG.alpha <=0){
_navBG.alpha = 0;
}
}
CGFloat width = self.view.frame.size.width; // 圖片寬度
CGFloat yOffset = scrollView.contentOffset.y;// 偏移的y值
if (yOffset < 0) {
CGFloat totalHeight = DEF_HeaderView_height + ABS(yOffset);
CGFloat f = totalHeight / DEF_HeaderView_height;
bgImage.frame =CGRectMake(- (width * f - width) / 2, yOffset, width * f, totalHeight); //拉伸后的圖片的frame應(yīng)該是同比例縮放。
}
}
ps:我實(shí)現(xiàn)上面透明的方法蒸甜。
1.self.navigationController.navigationBar.subviews[0].alpha=0;
_navBG=self.navigationController.navigationBar.subviews[0];
2.for(UIView*viewinself.navigationController.navigationBar.subviews) {
if([viewisKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) {
view.backgroundColor= [UIColor whiteColor];
view.alpha=0;
_navBG= view;
}
}