可以看到,该页面是分为两部分的,一部分是一开始就能看到的商品信息,然后我们上拉屏幕,屏幕不断往上滚动,滚动到第一部分结束时可以看到底部有“继续拖动,查看图文详情”一行文本出现。继续上拉到一个临界点便触发了翻页,此时第二部分以动画的形式从底部涌出占满整个屏幕。而且效果是该页面整体上移了,即第一部分和第二部分都是上移的。

此时,第二部分占满着整个屏幕,若我们下拉屏幕,则在屏幕顶部淡出“下拉,返回宝贝详情”的文本提示,并且达到一个临界值后文本变为“释放,返回宝贝详情”,此时松开手指,页面又滚动到第一部分的尾部。

实现

在自己写的demo中,第一部分是个tableView,展示商品基本信息。第二部分是个webView,展示商品图文详情。

第一步首先加载需要的视图。主要是第一部分的tableView和第二部分的webView,还有第二部分顶部显示上拉返回文本提示的headLab。为了节省资源,其实可以在上拉触发时再加载第二部分视图的,但是这里仅作示例,所以并没有懒加载。

- (void)loadContentView
{// first view[self.contentViewaddSubview:self.tableView];// second view[self.contentViewaddSubview:self.webView];UILabel *hv = self.headLab;// headLab[self.webViewaddSubview:hv];[self.headLabbringSubviewToFront:self.contentView];
}- (UILabel *)headLab
{if(!_headLab){_headLab = [[UILabelalloc] init];_headLab.text = @"上拉,返回详情";_headLab.textAlignment = NSTextAlignmentCenter;_headLab.font = FONT(13);}_headLab.frame = CGRectMake(0, 0, PDWidth_mainScreen, 40.f);_headLab.alpha = 0.f;_headLab.textColor = PDColor_button_Gray;return _headLab;
}- (UITableView *)tableView
{if(!_tableView){_tableView = [[UITableViewalloc] initWithFrame:CGRectMake(0, 0, PDWidth_mainScreen, self.contentView.bounds.size.height) style:UITableViewStylePlain];//    _tableView.contentSize = CGSizeMake(PDWidth_mainScreen, 800);_tableView.dataSource = self;_tableView.delegate = self;_tableView.rowHeight = 40.f;UILabel *tabFootLab = [[UILabelalloc] initWithFrame:CGRectMake(0, 0, PDWidth_mainScreen, 60)];tabFootLab.text = @"继续拖动,查看图文详情";tabFootLab.font = FONT(13);tabFootLab.textAlignment = NSTextAlignmentCenter;
//        tabFootLab.backgroundColor = PDColor_Orange;_tableView.tableFooterView = tabFootLab;}return _tableView;
}- (UIWebView *)webView
{if(!_webView){_webView = [[UIWebViewalloc] initWithFrame:CGRectMake(0, _tableView.contentSize.height, PDWidth_mainScreen, PDHeight_mainScreen)];_webView.delegate = self;_webView.scrollView.delegate = self;[_webViewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:@"https://www.baidu.com"]]];}return _webView;
}

然后实现滚动视图 UIScrollView 的代理方法,在里面完成滚动到达临界值后,触发翻页动画的处理。包括了上拉翻到第二页和下拉翻回第一页两部分,即要在该方法里通过判断scrollView的类型做相应的处理。

#pragma mark ---- scrollView delegate-(void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(BOOL)decelerate
{CGFloatoffsetY = scrollView.contentOffset.y;if([scrollViewisKindOfClass:[UITableViewclass]]) // tableView界面上的滚动{// 能触发翻页的理想值:tableView整体的高度减去屏幕本省的高度CGFloatvalueNum = _tableView.contentSize.height -PDHeight_mainScreen;if ((offsetY - valueNum) > _maxContentOffSet_Y){[self goToDetailAnimation]; // 进入图文详情的动画}}else // webView页面上的滚动{NSLog(@"-----webView-------");if(offsetY_maxContentOffSet_Y){[self backToFirstPageAnimation]; // 返回基本详情界面的动画}}
}

仿淘宝上拉进入详情页交互的实现相关推荐

  1. iOS 仿淘宝,上拉进入详情页面

    今天做的主要是一个模仿淘宝,上拉进入商品详情的功能,主要是通过 tableView 与 webView 一起来实现的,当然也可根据自己的需要把 webView 替换成你想要的 // // ViewCo ...

  2. android 仿淘宝、京东商品详情页 向上拖动查看图文详情控件

    一.淘宝商品详情页效果 先看一下淘宝详情页的效果 我们的效果 二.实现思路 使用两个scrollView,两个scrollView 竖直排列,通过自定义viewGroup来控制两个scrollView ...

  3. HTML5期末大作业:仿淘宝电商网站设计——仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业

    HTML5期末大作业:仿淘宝电商网站设计--仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业 常见网页设计作业题材有 个人. ...

  4. html网页制作——仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业C71

    HTML5期末大作业:仿淘宝电商网站设计--仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业 常见网页设计作业题材有 个人. ...

  5. 黄聪:淘宝用户在宝贝详情页想看到什么

    下载地址:淘宝用户在宝贝详情页想看到什么_(1).pdf

  6. Flutter实现京东淘宝电商商品详情页效果

    之前开发电商的功能时,需要做商品界面,UI基本是参考京东.淘宝的效果,以前android原生开发的时候觉得很好做,切到Flutter之后只能自己想办法,所以自己后来做出了这样的效果,分享下实现方案. ...

  7. 淘宝主页+女装会场+详情页(html+css+js)

    先看图吧,是个(html+css+js)阶段性作业 1.index.html 2.goods.html 3.goodsDetails.html 部分详细代码 <!DOCTYPE html> ...

  8. android仿淘宝下拉查看更多

    1.http://blog.csdn.net/zhongkejingwang/article/details/38656929 郑州跃睿电子科技有限公司(跃睿科技):www.yuerui365.com

  9. 仿淘宝商品详情页图片滑动并且数字也跟着变化

    今天遇到需求需要做个淘宝那样的商品详情页如图(这里只差放图片了)支持移动端,当然用的是swiper.js支持左右滑动 上代码 html代码 <div class="swiper-con ...

最新文章

  1. 数论(一)——素数,GCD,LCM
  2. SPIFFS文件系统移植–基于STM32F407
  3. mysql galera cluster实现vip_2019年学MySQL,最佳的10本新书
  4. 红帽7 -本地yum配置
  5. 利用LCD1602显示超声波测距
  6. 异步执行线程的两种方法
  7. 报表中去除字符中的空格
  8. JavaScript 代码简洁之道
  9. 详解:IDEA不能自动加载import问题
  10. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
  11. Flutter实战视频-移动电商-18.首页_火爆专区后台接口调试
  12. USACO26 moofest 奶牛集会(归并排序)
  13. Java数据库编程基本配置
  14. 使用python简单免费转换视频格式
  15. 华为手机html查看器,华为手机文件查看管理器
  16. java字符编码方式_java字符编码方式总结
  17. Android关机充电编译,Android6.0+关机状态下实现充电自动开机
  18. 恒生UFX 统一接入介绍
  19. 易安居平安家园隐私政策
  20. php%00 截断,%00截断问题

热门文章

  1. PC虚拟现实应用的性能分析与优化:从CPU角度切入
  2. 汤道生对话亚马逊CTO:安全不只是技术,要从战略视角系统构建
  3. 2013 7 5新鲜出炉 Ubuntu12 04下载Android4 0 1源码全过程---------------
  4. 铭瑄主板重装系统超详细步骤
  5. 时间是6G研发成功的关键
  6. Linux 系统故障排查
  7. linux开发板tftp 搭建,iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动
  8. Java 读书笔记1
  9. HDU-2594 Simpsons’ Hidden Talents
  10. 错误:Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/db.properties]