iOS TableView頭視圖根據(jù)偏移量下拉縮放效果
本文實(shí)例為大家分享了iOS TableView實(shí)現(xiàn)下拉縮放效果的具體代碼,供大家參考,具體內(nèi)容如下
在做項(xiàng)目時(shí),一些TableView的地方會使用到下拉TableView讓HeardView頭視圖隨其偏移量的變化而變化,之前做過一次但沒記錄下來?,F(xiàn)在做的時(shí)候總是遇到一些問題,比如下拉時(shí)是以原點(diǎn)向左右兩邊放大,這個(gè)只是效果問題。還有就是看到的視圖確實(shí)變大了,但是會蓋到下面的TableViewCell。開始以為是加在里面的視圖變大,而TableViewHeardView沒變大,我NSLog打印了一下兩個(gè)視圖的高度,發(fā)現(xiàn)是一樣的,找不到問題了。
在網(wǎng)上找了一些相關(guān)的例子,各有各的做法,有的是根據(jù)偏移量來設(shè)置TableViewHeardView的縮放,有的是設(shè)置里面被我們設(shè)置為TableViewHeardView的那個(gè)視圖的大小,都試了一下感覺還是不行,感覺縮放效果是有了的,但是拉大一點(diǎn)就會把下面的cell蓋住。
之后自己摸索,調(diào)整后,我是用偏移量來控制里面的imageView的大小,imageView是我設(shè)置的HeardView的子視圖,而heardView和TableViewheard的大小不會根據(jù)imageView變化,只是坐標(biāo)變了,其實(shí)這是一種錯(cuò)覺,真實(shí)的效果是imageView坐標(biāo)向左上方偏移,大小也變化,而heardView和TableViewheard沒變大,但imageView變大的部分蓋住他們的上方,讓我們覺得heardView和TableViewheard也變大了,可以參考文章下面的邏輯圖。
先看一看效果吧,一張是沒下拉時(shí)的效果,一張是下拉時(shí)的效果。

可以看到imageView向四周變大了,而頭像和昵稱只是垂直方向位置變了,而大小沒變。
這里用到的控件入下圖

#define ScreenWidth [UIScreen mainScreen].bounds.size.width
在viewDidLoad里創(chuàng)建一下
//========== 頭視圖創(chuàng)建與設(shè)置 ===========
imageHight = 250;
[self creatHeardView];
- (void)creatHeardView
{
headerView = [[UIView alloc] initWithFrame:(CGRectMake(0, 0, ScreenWidth, imageHight+50))];
//背景視圖
heardImageView = [[UIImageView alloc] init];
heardImageView.frame = CGRectMake(0, 0, ScreenWidth, imageHight);
heardImageView.image = [UIImage imageNamed:@"backGround.jpg"];
[headerView addSubview:heardImageView];
//用戶頭像
personImageView = [[UIImageView alloc] initWithFrame:CGRectMake(ScreenWidth-30-60, imageHight-30, 60, 60)];
personImageView.layer.cornerRadius = CGRectGetWidth(personImageView.frame)/2;
personImageView.layer.masksToBounds = YES;
[headerView addSubview:personImageView];
//用戶名
personNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(CGRectGetMinX(personImageView.frame)-200, CGRectGetMinY(personImageView.frame), 180, 30)];
personNameLabel.font = [UIFont systemFontOfSize:15];
personNameLabel.textColor = [UIColor whiteColor];
personNameLabel.textAlignment = NSTextAlignmentRight;
[headerView addSubview:personNameLabel];
//個(gè)人簽名
introduceLabel = [[UILabel alloc] initWithFrame:CGRectMake(30, CGRectGetMaxY(personImageView.frame), ScreenWidth-60, 20)];
introduceLabel.font = [UIFont systemFontOfSize:10];
introduceLabel.textColor = [UIColor grayColor];
introduceLabel.textAlignment = NSTextAlignmentRight;
[headerView addSubview:introduceLabel];
comTableView.tableHeaderView = headerView;//設(shè)置頭視圖
}
然后在TableView的滾動代理中有一個(gè)方法可以實(shí)時(shí)監(jiān)測滾動偏移量,
#pragma mark - 滾動代理
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat width = self.view.frame.size.width; // 圖片寬度
CGFloat yOffset = scrollView.contentOffset.y; // 偏移的y值,還要考慮導(dǎo)航欄的64哦
if (yOffset < 0) {//向下拉是負(fù)值,向上是正
CGFloat totalOffset = imageHight + ABS(yOffset);
CGFloat f = totalOffset / imageHight;//縮放比例
//拉伸后的圖片的frame應(yīng)該是同比例縮放。
heardImageView.frame = CGRectMake(- (width * f - width) / 2, yOffset, width * f, totalOffset);
}
}
邏輯圖:

這樣TableView的下拉縮放頭視圖功能就可以實(shí)現(xiàn)了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- iOS實(shí)現(xiàn)點(diǎn)擊圖片放大和長按保存圖片的示例
- iOS 點(diǎn)擊圖片放大效果的實(shí)現(xiàn)
- 解決iOS11圖片下拉放大出現(xiàn)信號欄白條的bug問題
- 利用iOS手勢與scrollView代理實(shí)現(xiàn)圖片的放大縮小
- iOS tableView實(shí)現(xiàn)頂部圖片拉伸效果
- iOS tableview實(shí)現(xiàn)頂部拉伸效果
- iOS tableView實(shí)現(xiàn)頭部拉伸并改變導(dǎo)航條漸變色
- iOS應(yīng)用開發(fā)中UITableView的分割線的一些設(shè)置技巧
- IOS UITableView和UITableViewCell的幾種樣式詳細(xì)介紹
- iOS tableView實(shí)現(xiàn)下拉圖片放大效果
相關(guān)文章
NSURLSession跨域重定向透傳HTTP Header問題解決
這篇文章主要為大家介紹了NSURLSession跨域重定向透傳HTTP Header問題解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
ios動態(tài)設(shè)置lbl文字標(biāo)簽的高度
本文給大家分享的是ios動態(tài)設(shè)置lbl文字標(biāo)簽的高度寬度的方法,一共給大家匯總了3種方法,小伙伴們根據(jù)自己的項(xiàng)目需求自由選擇。2015-05-05
淺析iOS應(yīng)用開發(fā)中線程間的通信與線程安全問題
這篇文章主要介紹了淺析iOS應(yīng)用開發(fā)中線程間的通信與線程安全問題,談到了包括互斥鎖的使用等設(shè)計(jì)要點(diǎn),需要的朋友可以參考下2015-11-11
iOS tableView右側(cè)索引視圖狀態(tài)獲取的方法實(shí)例
tableView用于顯示一個(gè)垂直滾動的單元格數(shù)(通常為可重復(fù)使用的單元格)組成的視圖,這篇文章主要給大家介紹了關(guān)于iOS tableView右側(cè)索引視圖狀態(tài)獲取的相關(guān)資料,需要的朋友可以參考下2021-07-07
IOS 調(diào)整內(nèi)存中的圖片大小實(shí)例詳解
這篇文章主要介紹了IOS 調(diào)整內(nèi)存中的圖片大小實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04

