1.搭建基本界面
- 在storyboard中自定義一個(gè)導(dǎo)航控制器,移除自帶的根控制器UITableViewController渐尿,重新拖入一個(gè)UIViewController,在根控制器上方拖入一個(gè)UIView,在UIView內(nèi)部拖入圖片脯倚,完成上圖界面嵌屎,建立好約束宝惰。
- 自定義一個(gè)AZViewController文件用來管理界面再沧,對(duì)背景圖片的UIView的高度約束和tableView與文件中的屬性進(jìn)行連線
2.在AZViewController中進(jìn)行界面操作
- 首先讓控制器成為tableView的代理,實(shí)現(xiàn)tableView的數(shù)據(jù)源和代理協(xié)議炒瘸,實(shí)現(xiàn)對(duì)應(yīng)的方法.
- 這里需要注意的是修改導(dǎo)航欄和導(dǎo)航欄標(biāo)題的透明度不能直接修改alpha值,可以給其添加控件拐邪,通過修改控件的顏色的方式對(duì)其透明度進(jìn)行修改
// 設(shè)置tableView的代理和數(shù)據(jù)源
self.tableView.delegate=self;
self.tableView.dataSource=self;
// 設(shè)置tableView的位置
self.tableView.contentInset=UIEdgeInsetsMake(244, 0, 0, 0);
self.automaticallyAdjustsScrollViewInsets=NO;
// 注冊(cè)tableViewCell的引用標(biāo)識(shí)
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:ID];
// 設(shè)置導(dǎo)航欄樣式
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc]init] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc]init]];
// 設(shè)置導(dǎo)航欄的標(biāo)題
UILabel *title=[[UILabel alloc]init];
title.text=@"個(gè)人詳情頁(yè)";
[title sizeToFit];
title.textColor=[UIColor colorWithWhite:0 alpha:0];
self.navigationItem.titleView=title;
3.頁(yè)面效果實(shí)現(xiàn)
- 通過UIScrollView的方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
對(duì)tableView的滾動(dòng)進(jìn)行監(jiān)聽扎阶,實(shí)現(xiàn)頁(yè)面效果的展示
- 這里需要注意scrollView的contentOffset往y軸正方向走的值是減小的
- 當(dāng)控件的透明度alpha值大于1時(shí)會(huì)出現(xiàn)有一點(diǎn)透明的效果婶芭,這里需要處理一下
#pragma mark - UIScrollView的代理方法
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// y軸位移
CGFloat offset=scrollView.contentOffset.y-(oriOfftY);
// 圖片底部距離上方高度
CGFloat h=oriHeight-offset;
// 滾動(dòng)到導(dǎo)航欄位置停止?jié)L動(dòng)
self.bgImageHeight.constant=h<64?64:h;
// 根據(jù)位移量設(shè)置透明度
CGFloat alpha=offset*1/136.0;
if (alpha>=1) {
alpha=0.99;
}
// 設(shè)置導(dǎo)航欄標(biāo)題的透明度,設(shè)置導(dǎo)航欄標(biāo)題的alpha無法直接修改,可以通過修改label的文字顏色的方式來修改
UILabel *titleL=(UILabel *)self.navigationItem.titleView;
titleL.textColor=[UIColor colorWithWhite:0 alpha:alpha];
self.navigationItem.titleView=titleL;
// 設(shè)置導(dǎo)航條的透明惰赋,同樣無法直接修改alpha井赌,通過設(shè)置背景圖片的alpha值來修改導(dǎo)航欄的透明度
UIImage *alphaColor=[UIImage imageWithColor:[UIColor colorWithWhite:1 alpha:alpha]];
[self.navigationController.navigationBar setBackgroundImage:alphaColor forBarMetrics:UIBarMetricsDefault];
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者