本文實(shí)例為大家分享了iOS TableView實(shí)現(xiàn)下拉縮放效果的具體代碼,供大家參考,具體內(nèi)容如下
在做項(xiàng)目時(shí),一些TableView的地方會(huì)使用到下拉TableView讓HeardView頭視圖隨其偏移量的變化而變化,之前做過(guò)一次但沒(méi)記錄下來(lái)。現(xiàn)在做的時(shí)候總是遇到一些問(wèn)題,比如下拉時(shí)是以原點(diǎn)向左右兩邊放大,這個(gè)只是效果問(wèn)題。還有就是看到的視圖確實(shí)變大了,但是會(huì)蓋到下面的TableViewCell。開(kāi)始以為是加在里面的視圖變大,而TableViewHeardView沒(méi)變大,我NSLog打印了一下兩個(gè)視圖的高度,發(fā)現(xiàn)是一樣的,找不到問(wèn)題了。
在網(wǎng)上找了一些相關(guān)的例子,各有各的做法,有的是根據(jù)偏移量來(lái)設(shè)置TableViewHeardView的縮放,有的是設(shè)置里面被我們?cè)O(shè)置為T(mén)ableViewHeardView的那個(gè)視圖的大小,都試了一下感覺(jué)還是不行,感覺(jué)縮放效果是有了的,但是拉大一點(diǎn)就會(huì)把下面的cell蓋住。
之后自己摸索,調(diào)整后,我是用偏移量來(lái)控制里面的imageView的大小,imageView是我設(shè)置的HeardView的子視圖,而heardView和TableViewheard的大小不會(huì)根據(jù)imageView變化,只是坐標(biāo)變了,其實(shí)這是一種錯(cuò)覺(jué),真實(shí)的效果是imageView坐標(biāo)向左上方偏移,大小也變化,而heardView和TableViewheard沒(méi)變大,但imageView變大的部分蓋住他們的上方,讓我們覺(jué)得heardView和TableViewheard也變大了,可以參考文章下面的邏輯圖。
先看一看效果吧,一張是沒(méi)下拉時(shí)的效果,一張是下拉時(shí)的效果。
可以看到imageView向四周變大了,而頭像和昵稱(chēng)只是垂直方向位置變了,而大小沒(méi)變。
這里用到的控件入下圖
#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]; //用戶(hù)頭像 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]; //用戶(hù)名 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的滾動(dòng)代理中有一個(gè)方法可以實(shí)時(shí)監(jiān)測(cè)滾動(dòng)偏移量, #pragma mark - 滾動(dòng)代理 - (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); } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站vcdvsql.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站名稱(chēng):iOSTableView頭視圖根據(jù)偏移量下拉縮放效果-創(chuàng)新互聯(lián)
本文地址:http://vcdvsql.cn/article18/dcpcgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、云服務(wù)器、商城網(wǎng)站、網(wǎng)站收錄、虛擬主機(jī)、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容