• 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-04-18
  • 生活-热门标签-华商生活 2019-04-18
  • 文化山西:风华长城岁月歌 2019-04-16
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-04-16
  • 台湾布袋戏大师陈锡煌的两岸缘 2019-04-13
  • 老师:讲课再累都不怕 就怕各级搞检查讲课再累都不怕-教育时讯 2019-04-13
  • 行业变革中的房产经纪公司加盟暗战 ——凤凰网房产深圳 2019-03-31
  • 图解:习近平出席博鳌亚洲论坛2018年年会前瞻 2019-03-19
  • 外贸创新举措 让开放惠及世界 2019-03-15
  • 记者带你逛CES:体验未来科技 2019-03-14
  • 我的中国医改建议,彻底解决看病难看病贵 2019-03-14
  • 海空联合演练相关新闻 2019-01-05
  • 登录 立即注册
    金钱:

    广州快乐十分开奖记录

    广东快乐十分害死我了:iOS用GKPageScrollView实现微博发现页滑动效果

    [复制链接]
    来自: QuintGao 分类: iOS精品源码 上传时间: 2019-3-8 13:18:25
    Tag:

    项目介绍:

    前言

    广州快乐十分开奖记录 www.2hyn.net 近期发现微博的发现页有这样一个功能,页面整体可以下拉刷新,当中间的标签上滑到顶部导航栏位置后,标签栏固定不动,下方列表页可以下拉刷新,上拉加载,导航栏左边出现返回按钮,当点击返回按钮后,页面回到初始位置。

    于是我用我写的一个库GKPageScrollView实现了相应的效果,先来看下效果图:
    仿微博发现页

    实现

    1、首先创建GKPageScrollView

    - (GKPageScrollView *)pageScrollView {
        if (!_pageScrollView) {
            _pageScrollView = [[GKPageScrollView alloc] initWithDelegate:self]; // 创建并设置代理
            _pageScrollView.ceilPointHeight = GK_STATUSBAR_HEIGHT;  // 设置临界点高度
            _pageScrollView.isAllowListRefresh = YES;  // 允许列表刷新
            _pageScrollView.isDisableMainScrollInCeil = YES;  // 禁止mainScrollView在到达临界点后继续滑动
        }
        return _pageScrollView;
    }

    2、实现GKPageScrollView的代理

    #pragma mark - GKPageScrollViewDelegate
    - (UIView *)headerViewInPageScrollView:(GKPageScrollView *)pageScrollView {
        return self.headerView;
    }
    
    - (UIView *)pageViewInPageScrollView:(GKPageScrollView *)pageScrollView {
        return self.pageView;
    }
    
    - (NSArray<id<GKPageListViewDelegate>> *)listViewsInPageScrollView:(GKPageScrollView *)pageScrollView {
        return self.childVCs;
    }
    
    - (void)mainTableViewDidScroll:(UIScrollView *)scrollView isMainCanScroll:(BOOL)isMainCanScroll {
        self.isMainCanScroll = isMainCanScroll;
        
        if (!isMainCanScroll) {
            self.gk_navLeftBarButtonItem = self.backItem;  // 到达临界点后显示返回按钮
            self.gk_popDelegate = self;
        }else {
            self.gk_navLeftBarButtonItem = nil; 
            self.gk_popDelegate = nil;
        }
        
        // topView透明度渐变
        // contentOffsetY GK_STATUSBAR_HEIGHT-64  topView的alpha 0-1
        CGFloat offsetY = scrollView.contentOffset.y;
        
        CGFloat alpha = 0;
        
        if (offsetY <= GK_STATUSBAR_HEIGHT) { // alpha: 0
            alpha = 0;
        }else if (offsetY >= 64) { // alpha: 1
            alpha = 1;
        }else { // alpha: 0-1
            alpha = (offsetY - GK_STATUSBAR_HEIGHT) / (64 - GK_STATUSBAR_HEIGHT);
        }
        
        self.topView.alpha = alpha;
    }

    3、返回按钮点击处理

    - (void)backAction {
        if (self.isMainCanScroll) { 
            [self.navigationController popViewControllerAnimated:YES];
        }else { // 到达临界点状态,滑动到原点
            [self.pageScrollView scrollToOriginalPoint];
            self.backBtn.hidden = YES;
            self.topView.alpha = 0;
        }
    }

    4、右滑返回原点(要实现此功能可自己添加滑动手势或集成GKNavigationBarViewController
    这里以GKNavigationBarViewController为例:

        // 滑动到临界点时,设置代理
        if (!isMainCanScroll) {
            self.backBtn.hidden = NO;
            self.gk_popDelegate = self;
        }else {
            self.backBtn.hidden = YES;
            self.gk_popDelegate = nil;
        }
    
    // 实现代理方法
    #pragma mark - GKViewControllerPopDelegate
    // 右滑手势结束后会调用此方法
    - (void)viewControllerPopScrollEnded {
        [self backAction];
    }

    通过上面的步骤,就能实现微博发现页的效果了,当然还有一些其他细节处理,具体看demo。

    最后

    上面所说的demo都在GKPageScrollView中,需要的可以下载查看。

    另外推荐下我的图片浏览器GKPhotoBrowser

    相关源码推荐:

    我来说两句
    *滑动验证:
    所有评论(11)
    逆鳞九霄 2019-3-11 10:03:42
    楼主用心了,内容非常精彩。
    回复
    逆鳞九霄 2019-3-11 10:05:14
    感谢分享,Code4App有你更精彩:)
    回复
    ou大神 2019-3-11 10:06:06
    code4app好的代码demo真的很多,谢谢啦~
    回复
    一人无 2019-3-11 10:06:08
    mark,收藏了
    回复
    t8569 2019-3-11 10:06:27
    code4app好的内容真的很多~赞
    回复
    Yf8546 2019-3-11 10:06:42
    感谢大神分享,必须顶!
    回复
    kengsir 2019-3-11 10:07:01
    mark,收藏了
    回复
    pp美景 2019-3-11 10:07:07
    感谢分享,楼主V5~
    回复
    end_cancel 2019-3-15 14:17:20
    很厉害,关注了
    回复
    12下一页
    845 3 0
    联系我们
    首页/微信公众账号投稿

    帖子代码编辑/版权问题

    QQ:435399051,742864542

    如何获得代码达人称号?

    代码贡献英雄榜
    用户名 下载数
    通过邮件订阅最新 Code4App 信息
    上一条 /4 下一条
    联系我们
    关闭
    合作电话:
    13802416937
    Email:
    [email protected]
    商务市场合作/投稿
    问题反馈及帮助
    联系我们

    广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|广州快乐十分开奖记录 ( 粤ICP备15117877号-1 )

    快速回复 广州快乐十分开奖记录 返回列表
  • 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-04-18
  • 生活-热门标签-华商生活 2019-04-18
  • 文化山西:风华长城岁月歌 2019-04-16
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-04-16
  • 台湾布袋戏大师陈锡煌的两岸缘 2019-04-13
  • 老师:讲课再累都不怕 就怕各级搞检查讲课再累都不怕-教育时讯 2019-04-13
  • 行业变革中的房产经纪公司加盟暗战 ——凤凰网房产深圳 2019-03-31
  • 图解:习近平出席博鳌亚洲论坛2018年年会前瞻 2019-03-19
  • 外贸创新举措 让开放惠及世界 2019-03-15
  • 记者带你逛CES:体验未来科技 2019-03-14
  • 我的中国医改建议,彻底解决看病难看病贵 2019-03-14
  • 海空联合演练相关新闻 2019-01-05
  • 新疆时时彩三星和值尾 东京快乐8开奖结果 混合过关奖金如何计算 中国福利彩票走势图。 新疆时时彩开奖官网 南国都市七星彩走势图 pc蛋蛋如何兑换现金 河南22选5最新开奖号 网上赌场 德州扑克 网站 重庆时时彩高频彩 玩重庆幸运农场害人 河北时时彩开奖号码 湖南快乐十分遗漏数据爱彩乐 足球比分 排列五杀号定胆