最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一個方法搞定iOS下拉放大及上推縮小

 更新時間:2016年07月28日 09:45:57   作者:簡書作者  
在很多的APP中,我們可以看到一個列表頂部的圖片會隨著下拉會放大,隨著上推縮小。這樣的效果沒能給定一個固有名詞,現(xiàn)在本文介紹使用代碼實現(xiàn)這樣的效果,代碼量很少,容易理解。當(dāng)然實現(xiàn)效果是很好的。

下面這種效果在ios應(yīng)用中很常見:

實現(xiàn)思路:

1、創(chuàng)建頭部的視圖和tableview,需要注意的是tableview要設(shè)置contentInset,contentInsent 的頂部要和頭部視圖的背景圖的高度一樣,否則會有空隙(或是有遮擋)。

myTableView.contentInset = UIEdgeInsetsMake(headRect.size.height-navHeight-navHeight, 0, 0, 0);

2、對頭部視圖的背景圖片的尺寸進行處理,當(dāng)然,你也可以直接找一個適合尺寸的圖片,就不用處理圖片了,為了增加程序的擴展性,我就隨便選了張圖,并進行圖片尺寸處理。

 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)備工作就完成了,接下來,一個方法實現(xiàn)我們的下拉放大、上推縮小的功能,當(dāng)然,重點和難點是邏輯,技術(shù)很easy。大家都知道UITableView是繼承UIScrollView的,利用UIScrollView的代理方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView;來實現(xiàn)。

下拉放大

在這個方法中,我們將功能分為兩部分,一個是下拉放大,這個是比較容易的,就是對頭部視圖的背景圖進行放大,調(diào)整frame,需要注意的是在此需要調(diào)整圖片的顯示方式,因為下拉和上推中圖片顯示的方式是不同的,否則即使你調(diào)整了frame,也不會按frame來顯示的。

 _myView.backgroundView.contentMode = UIViewContentModeScaleToFill;

 _myView.backgroundView.frame = CGRectMake(offset_Y*0.5 , -navHeight, VCWidth - offset_Y, headRect.size.height - offset_Y);

上推移動縮小

這個就比較難理解了,當(dāng)然,我說的是中間對frame的算法,我們將三個視圖分開說。

1.背景圖:先切換顯示模式,然后將y隨著tableview偏移移動到0,高度也是隨著tableview偏移,最終移動到需要的高度(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的偏移而移動自身的位置,并且還要進行縮小。這里面就是一個線性方程的關(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.簽名:簽名比較簡單,只要跟著頭像動就行,然后再根據(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é)水平就夠了,因為都只是簡單的線性關(guān)系。希望本文給大家學(xué)習(xí)IOS開發(fā)有所幫助。

相關(guān)文章

  • iOS橫屏彈鍵盤的高度錯誤異常解決

    iOS橫屏彈鍵盤的高度錯誤異常解決

    這篇文章主要給大家介紹了關(guān)于iOS橫屏彈鍵盤的高度錯誤異常解決的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Objective-C實現(xiàn)自定義的半透明導(dǎo)航

    Objective-C實現(xiàn)自定義的半透明導(dǎo)航

    這篇文章主要為大家詳細介紹了Objective-C實現(xiàn)自定義的半透明導(dǎo)航的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • 詳解IOS中如何實現(xiàn)瀑布流效果

    詳解IOS中如何實現(xiàn)瀑布流效果

    說到瀑布流, 或許大家都不陌生, 瀑布流的實現(xiàn)也有很多種! 從scrollView 到 tableView 書寫的瀑布流, 然后再到2012年iOS6 蘋果API新加進的collectionView進行的瀑布流封裝! 確實,不論是寫起來還是用起來都要方便很多!那么下面一起來看看IOS中具體如何實現(xiàn)瀑布流效果。
    2016-08-08
  • iOS masonry的使用方法

    iOS masonry的使用方法

    這篇文章主要介紹了iOS masonry的基本使用方法的相關(guān)資料,文章還介紹了CocoaPods的安裝過程,需要的朋友可以參考下面文字內(nèi)容
    2021-09-09
  • iOS獲取到用戶當(dāng)前位置

    iOS獲取到用戶當(dāng)前位置

    這篇文章主要為大家詳細介紹了iOS獲取到用戶當(dāng)前位置,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • IOS實現(xiàn)簽到特效(散花效果)的實例代碼

    IOS實現(xiàn)簽到特效(散花效果)的實例代碼

    這篇文章主要介紹了IOS實現(xiàn)簽到特效(散花效果)的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    iOS中定位(location manager )出現(xiàn)log日志的解決辦法

    這篇文章主要給大家介紹了關(guān)于iOS中定位(location manager )出現(xiàn)log日志的解決辦法,文中通過示例代碼將解決的辦法介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • IOS 開發(fā)之PickerView文字和隨機數(shù)的使用

    IOS 開發(fā)之PickerView文字和隨機數(shù)的使用

    這篇文章主要介紹了IOS 開發(fā)之PickerView文字和隨機數(shù)的使用的相關(guān)資料,這里提供實例幫助大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • ios開發(fā)加載webview顯示進度條實例

    ios開發(fā)加載webview顯示進度條實例

    本篇文章主要介紹了ios開發(fā)加載webview顯示進度條實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • iOS利用UIScrollView實現(xiàn)圖片的縮放實例代碼

    iOS利用UIScrollView實現(xiàn)圖片的縮放實例代碼

    本篇文章主要介紹了iOS利用UIScrollView實現(xiàn)圖片的縮放實例代碼,具有一定的參考價值,有興趣的可以了解一下
    2017-07-07

最新評論

漳州市| 廊坊市| 安丘市| 永丰县| 濮阳县| 泽库县| 遵化市| 潍坊市| 莱西市| 县级市| 榆中县| 正蓝旗| 济阳县| 莱州市| 丹寨县| 绥德县| 南和县| 抚顺县| 乳山市| 诸暨市| 张家川| 施甸县| 卢氏县| 蕉岭县| 龙泉市| 手机| 武平县| 嫩江县| 象州县| 泰顺县| 盐亭县| 棋牌| 甘肃省| 金阳县| 临泉县| 江津市| 陆丰市| 临颍县| 四川省| 娱乐| 汝阳县|