一個(gè)方法搞定iOS下拉放大及上推縮小
下面這種效果在ios應(yīng)用中很常見:

實(shí)現(xiàn)思路:
1、創(chuàng)建頭部的視圖和tableview,需要注意的是tableview要設(shè)置contentInset,contentInsent 的頂部要和頭部視圖的背景圖的高度一樣,否則會(huì)有空隙(或是有遮擋)。
myTableView.contentInset = UIEdgeInsetsMake(headRect.size.height-navHeight-navHeight, 0, 0, 0);
2、對頭部視圖的背景圖片的尺寸進(jìn)行處理,當(dāng)然,你也可以直接找一個(gè)適合尺寸的圖片,就不用處理圖片了,為了增加程序的擴(kuò)展性,我就隨便選了張圖,并進(jìn)行圖片尺寸處理。
UIImage * image = [UIImage imageNamed:name]; UIImage * newImg = [self image:image byScalingToSize:self.bounds.size]; backgroundView.image = newImg; backgroundView.clipsToBounds = YES;//切掉圖片多余的部分
//處理圖片方法
- (UIImage *)image:(UIImage*)image byScalingToSize:(CGSize)targetSize {
UIImage *sourceImage = image;
UIImage *newImage = nil;
UIGraphicsBeginImageContext(targetSize);
CGRect thumbnailRect = CGRectZero;
thumbnailRect.origin = CGPointZero;
thumbnailRect.size.width = targetSize.width;
thumbnailRect.size.height = targetSize.height;
[sourceImage drawInRect:thumbnailRect];
newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage ;
}
3.搞定了這些,準(zhǔn)備工作就完成了,接下來,一個(gè)方法實(shí)現(xiàn)我們的下拉放大、上推縮小的功能,當(dāng)然,重點(diǎn)和難點(diǎn)是邏輯,技術(shù)很easy。大家都知道UITableView是繼承UIScrollView的,利用UIScrollView的代理方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView;來實(shí)現(xiàn)。
下拉放大
在這個(gè)方法中,我們將功能分為兩部分,一個(gè)是下拉放大,這個(gè)是比較容易的,就是對頭部視圖的背景圖進(jìn)行放大,調(diào)整frame,需要注意的是在此需要調(diào)整圖片的顯示方式,因?yàn)橄吕蜕贤浦袌D片顯示的方式是不同的,否則即使你調(diào)整了frame,也不會(huì)按frame來顯示的。
_myView.backgroundView.contentMode = UIViewContentModeScaleToFill; _myView.backgroundView.frame = CGRectMake(offset_Y*0.5 , -navHeight, VCWidth - offset_Y, headRect.size.height - offset_Y);
上推移動(dòng)縮小
這個(gè)就比較難理解了,當(dāng)然,我說的是中間對frame的算法,我們將三個(gè)視圖分開說。
1.背景圖:先切換顯示模式,然后將y隨著tableview偏移移動(dòng)到0,高度也是隨著tableview偏移,最終移動(dòng)到需要的高度(Demo留的是44)
_myView.backgroundView.contentMode = UIViewContentModeTop; _myView.backgroundView.frame = CGRectMake(0 ,navHeight* offset_Y/(headRect.size.height-navHeight-navHeight)-navHeight; , VCWidth , headRect.size.height -(navHeight + navHeight* offset_Y/(headRect.size.height-navHeight-navHeight)-navHeight;) - offset_Y);
2.頭像:頭像需要隨著tableview的偏移而移動(dòng)自身的位置,并且還要進(jìn)行縮小。這里面就是一個(gè)線性方程的關(guān)系,和上面的的背景圖是一樣的。
CGFloat width = offset_Y*(40-(VCWidth / 4))/(headRect.size.height-navHeight-navHeight)+(VCWidth / 4); _myView.headView.frame =CGRectMake(0, 0, width,width); _myView.headView.layer.cornerRadius =width*0.5; _myView.headView.center = _myView.backgroundView.center;
3.簽名:簽名比較簡單,只要跟著頭像動(dòng)就行,然后再根據(jù)偏移調(diào)整自己的透明度就行了。
_myView.signLabel.frame =CGRectMake(0, CGRectGetMaxY(_myView.headView.frame), VCWidth, 40); _myView.signLabel.alpha = 1 - (offset_Y*3 / (headRect.size.height-navHeight-navHeight) /2);
好了,然后就大功告成了,里的的邏輯挺麻煩的,但有初中的數(shù)學(xué)水平就夠了,因?yàn)槎贾皇呛唵蔚木€性關(guān)系。希望本文給大家學(xué)習(xí)IOS開發(fā)有所幫助。
- 舉例講解iOS中延遲加載和上拉刷新/下拉加載的實(shí)現(xiàn)
- iOS開發(fā)中視圖的下拉放大和上拉模糊的效果實(shí)現(xiàn)
- iOS實(shí)現(xiàn)頂部標(biāo)簽式導(dǎo)航欄及下拉分類菜單
- iOS編寫下拉刷新控件
- iOS開發(fā)之tableView點(diǎn)擊下拉擴(kuò)展與內(nèi)嵌collectionView上傳圖片效果
- iOS開發(fā)之UITableView與UISearchController實(shí)現(xiàn)搜索及上拉加載,下拉刷新實(shí)例代碼
- IOS代碼筆記之下拉菜單效果
- iOS實(shí)現(xiàn)MJRefresh下拉刷新(上拉加載)使用詳解
- iOS下拉選擇菜單簡單封裝
- iOS DropDown下拉按鈕效果代碼分享
相關(guān)文章
Objective-C實(shí)現(xiàn)自定義的半透明導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了Objective-C實(shí)現(xiàn)自定義的半透明導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2016-05-05
IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼
這篇文章主要介紹了IOS實(shí)現(xiàn)簽到特效(散花效果)的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05
iOS中定位(location manager )出現(xiàn)log日志的解決辦法
這篇文章主要給大家介紹了關(guān)于iOS中定位(location manager )出現(xiàn)log日志的解決辦法,文中通過示例代碼將解決的辦法介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
IOS 開發(fā)之PickerView文字和隨機(jī)數(shù)的使用
這篇文章主要介紹了IOS 開發(fā)之PickerView文字和隨機(jī)數(shù)的使用的相關(guān)資料,這里提供實(shí)例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-08-08
ios開發(fā)加載webview顯示進(jìn)度條實(shí)例
本篇文章主要介紹了ios開發(fā)加載webview顯示進(jìn)度條實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
iOS利用UIScrollView實(shí)現(xiàn)圖片的縮放實(shí)例代碼
本篇文章主要介紹了iOS利用UIScrollView實(shí)現(xiàn)圖片的縮放實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07

