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

iOS仿高德首頁推拉效果實(shí)例代碼

 更新時(shí)間:2021年11月11日 16:16:01   作者:鄂北  
這篇文章主要給大家介紹了關(guān)于iOS仿高德首頁推拉效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

上面是實(shí)現(xiàn)的效果,滑動(dòng)的視圖是新建的一個(gè)UIView子類

1、滑動(dòng)view的調(diào)用

    SlideView * slideView = [[SlideView alloc] initWithFrame:CGRectMake(0, kScreenHeight-140, kScreenWidth, kScreenHeight-100)];
    slideView.topH = 100;
    [self.view addSubview:slideView];

SlideView是新建的一個(gè)UIView子類

kScreenHeight屏幕高

kScreenWidth屏幕寬

topH是視圖滑動(dòng)到頂部時(shí)距離屏幕頂部的距離

注意點(diǎn):SlideView的高應(yīng)該是屏幕的高減去topH,否則視圖滑到頂部時(shí)高會(huì)有點(diǎn)不適配的問題

2、為視圖添加滑動(dòng)手勢(shì)和tableview相關(guān)配置

    UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
    panGestureRecognizer.delegate = self;
    [self addGestureRecognizer:panGestureRecognizer];
    self.tableView.bounces = NO;
    self.tableView.userInteractionEnabled = NO;

tableView必須加上上面這兩個(gè)屬性

userInteractionEnabled屬性是用來阻止當(dāng)視圖在底部時(shí)禁止tableview上的手勢(shì)的,不加這個(gè)屬性時(shí)會(huì)導(dǎo)致視圖在底部時(shí)會(huì)響應(yīng)tableview向上滾動(dòng)的事件,從而導(dǎo)致視圖無法整體向上滑動(dòng)。當(dāng)視圖滑到頂部時(shí)又需要把userInteractionEnabled設(shè)為YES,否則tableview無法向上滾動(dòng)。如果在底部時(shí)tableview并沒有展示出來,展示的只是一些其他的控件就可以不需要設(shè)置這個(gè)屬性
bounces設(shè)為NO是為了阻止tableview滾動(dòng)到頂部時(shí)還能響應(yīng)自己的向下拉的事件,從而去響應(yīng)整個(gè)視圖的向下滑到手勢(shì)。

3、設(shè)置允許同時(shí)響應(yīng)多個(gè)手勢(shì)

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}

這個(gè)允許同時(shí)響應(yīng)多個(gè)手勢(shì)是必須的,否則視圖的手勢(shì)會(huì)被tableview的事件覆蓋掉。

4、滑動(dòng)相關(guān)邏輯處理

1、在scrollViewDidScroll中獲取tableview偏移量,記錄下來

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat currentPostion = scrollView.contentOffset.y;
    self.stop_y = currentPostion;
}

2、滑動(dòng)手勢(shì)的處理

self.top是視圖的self.frame.origin.y,我這邊是寫在了分類中。

self.bottomH在視圖初始時(shí)將self.top賦值給了self.bottomH

在視圖滑動(dòng)過程中對(duì)速度和距離做了判斷,根據(jù)速度和距離將視圖滑動(dòng)到底部和頂部

- (void)panAction:(UIPanGestureRecognizer *)pan
{
    // 獲取視圖偏移量
    CGPoint point = [pan translationInView:self];
    // stop_y是tableview的偏移量,當(dāng)tableview的偏移量大于0時(shí)則不去處理視圖滑動(dòng)的事件
    if (self.stop_y>0) {
        // 將視頻偏移量重置為0
        [pan setTranslation:CGPointMake(0, 0) inView:self];
        return;
    }
    
    // self.top是視圖距離頂部的距離
    self.top += point.y;
    if (self.top < self.topH) {
        self.top = self.topH;
    }
    
    // self.bottomH是視圖在底部時(shí)距離頂部的距離
    if (self.top > self.bottomH) {
        self.top = self.bottomH;
    }
    
    // 在滑動(dòng)手勢(shì)結(jié)束時(shí)判斷滑動(dòng)視圖距離頂部的距離是否超過了屏幕的一半,如果超過了一半就往下滑到底部
    // 如果小于一半就往上滑到頂部
    if (pan.state == UIGestureRecognizerStateEnded || pan.state == UIGestureRecognizerStateCancelled) {
        
        // 滑動(dòng)速度
        CGPoint velocity = [pan velocityInView:self];
        CGFloat speed = 350;
        if (velocity.y < -speed) {
            [self goTop];
            [pan setTranslation:CGPointMake(0, 0) inView:self];
            return;
        }else if (velocity.y > speed){
            [self goBack];
            [pan setTranslation:CGPointMake(0, 0) inView:self];
            return;
        }
        
        if (self.top > kScreenHeight/2) {
            [self goBack];
        }else{
            [self goTop];
        }
    }
    
    [pan setTranslation:CGPointMake(0, 0) inView:self];
}

3、滑動(dòng)到底部和頂部的事件

滑到底部時(shí)需要userInteractionEnabled設(shè)為NO,取消掉tableview的響應(yīng)事件。滑到頂部時(shí)再將userInteractionEnabled設(shè)為YES

- (void)goTop {
    [UIView animateWithDuration:0.5 animations:^{
        self.top = self.topH;
    }completion:^(BOOL finished) {
        self.tableView.userInteractionEnabled = YES;
    }];
}

- (void)goBack {
    [UIView animateWithDuration:0.5 animations:^{
        self.top = self.bottomH;
    }completion:^(BOOL finished) {
        self.tableView.userInteractionEnabled = NO;
    }];
}

4、注意點(diǎn)

因?yàn)樵诘撞繒r(shí)給tableview的serInteractionEnabled屬性設(shè)置了NO,這將導(dǎo)致tableview上的所有事件都被取消了,包括cell的選中。如果想保留這個(gè)屬性,則可以在scrollViewDidScroll中增加[scrollView setContentOffset:CGPointMake(0, 0)]
同時(shí)將代碼中的serInteractionEnabled全部注釋掉就可以了。

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGFloat currentPostion = scrollView.contentOffset.y;
    self.stop_y = currentPostion;
    
    if (self.top>self.topH) {
        [scrollView setContentOffset:CGPointMake(0, 0)];
    }
}

至此整個(gè)滑動(dòng)效果就實(shí)現(xiàn)了,有興趣的小伙伴可以下載demo看看

總結(jié)

到此這篇關(guān)于iOS仿高德首頁推拉效果的文章就介紹到這了,更多相關(guān)iOS仿高德首頁推拉內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Xcode 開發(fā)工具 XCActionBar

    淺談Xcode 開發(fā)工具 XCActionBar

    本文主要給大家簡單講解了Xcode的開發(fā)工具 XCActionBar的介紹與使用方法,非常的全面實(shí)用,有需要的小伙伴可以參考下。
    2015-11-11
  • iOS實(shí)現(xiàn)微信朋友圈與搖一搖功能

    iOS實(shí)現(xiàn)微信朋友圈與搖一搖功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)微信朋友圈與搖一搖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS實(shí)現(xiàn)滑動(dòng)弧形菜單的思路與方法

    iOS實(shí)現(xiàn)滑動(dòng)弧形菜單的思路與方法

    這篇文章主要給大家介紹了利用iOS實(shí)現(xiàn)滑動(dòng)弧形菜單的思路與方法,實(shí)現(xiàn)后的效果非常不錯(cuò),非常適合大家在開發(fā)中使用,文末給出了封裝源碼下載的地址供大家下載學(xué)習(xí),需要的朋友可以參考,下面來一起看看吧。
    2017-05-05
  • iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果

    iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果

    這篇文章主要為大家詳細(xì)介紹了iOS使用UICollectionView實(shí)現(xiàn)橫向滾動(dòng)照片效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • iOS中SQLite使用教程

    iOS中SQLite使用教程

    sqlite是嵌入式的和輕量級(jí)的sql數(shù)據(jù)庫。sqlite是由c實(shí)現(xiàn)的。廣泛用于包括瀏覽器(支持html5的大部分瀏覽器,ie除外)、ios、android以及一些便攜需求的小型web應(yīng)用系統(tǒng)
    2016-03-03
  • iOS實(shí)現(xiàn)萌貨貓頭鷹登錄界面動(dòng)畫

    iOS實(shí)現(xiàn)萌貨貓頭鷹登錄界面動(dòng)畫

    本文介紹的動(dòng)畫效果仿自國外網(wǎng)站readme.io的登錄界面,超萌可愛的貓頭鷹,感興趣的朋友們可以參考學(xué)習(xí)。
    2016-08-08
  • ios學(xué)習(xí)筆記之基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換

    ios學(xué)習(xí)筆記之基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換

    在編碼過程中,數(shù)據(jù)的處理是必要的。眾多數(shù)據(jù)中,NSString、NSData、NSArray、 NSDictionary等數(shù)據(jù)類型是常用的,對(duì)付它們?nèi)菀?,但是在多個(gè)數(shù)據(jù)類型之間轉(zhuǎn)換就需要技巧了。本文主要給大家介紹ios中基礎(chǔ)數(shù)據(jù)類型的轉(zhuǎn)換,有需要的下面來一起看看吧。
    2016-11-11
  • ios wkwebview離線化加載h5資源解決方案

    ios wkwebview離線化加載h5資源解決方案

    本篇文章主要介紹了ios wkwebview離線化加載h5資源解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 沙盒路徑獲取以及圖片保存到相簿的方法

    沙盒路徑獲取以及圖片保存到相簿的方法

    下面小編就為大家分享一篇沙盒路徑獲取以及圖片保存到相簿的方法,具有很的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • iOS二維碼的生成和掃描

    iOS二維碼的生成和掃描

    這篇文章主要為大家詳細(xì)介紹了iOS二維碼生成和掃描的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論

安乡县| 梁山县| 黔江区| 宽甸| 余庆县| 甘谷县| 榆社县| 华蓥市| 邯郸县| 郯城县| 北流市| 和平县| 房产| 板桥市| 青铜峡市| 琼结县| 金门县| 泽州县| 曲靖市| 鲁山县| 大埔县| 舞阳县| 和政县| 绩溪县| 永修县| 临颍县| 广德县| 奈曼旗| 博罗县| 时尚| 利川市| 东山县| 房产| 蚌埠市| 新巴尔虎右旗| 湘乡市| 化州市| 商丘市| 大英县| 岗巴县| 电白县|