希望有建议可以一起交流。
不累赘多余语言,看效果图:

代码如下

#import "ViewController.h"
#import "UIView+Category.h"#define ViewWidth (self.view.width)         //  屏幕宽度
#define ViewHeight (self.view.height-20)    //  屏幕高度【减去的20 为状态栏的高度,如果为全屏显示,就不需要减去20】
#define up_down_showLabel_minHeight 30      //  提示Label 的最小高度@interface ViewController () <UIScrollViewDelegate>
/** 最外层的ScrollView 这里是在Storyboard中拉取的,设置其布局约束为充满整个屏幕这里留出了StatusBar的高度,实际留不留取决与设计*/
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
/** 第一页的 ScrollView */
@property (nonatomic, strong) UIScrollView * subScrollView;
/** 第二页的 WebView */
@property (nonatomic, strong) UIWebView * webView;
/** 第一页与第二页过渡时 显示的 提示Label */
@property (nonatomic, strong) UILabel * up_down_showLabel;@end@implementation ViewController#pragma mark - 懒加载
/** 第一页的 ScrollView */
- (UIScrollView *)subScrollView {if (!_subScrollView) {//  将 subScrollView 放在第一页_subScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, ViewWidth, ViewHeight)];[_subScrollView setContentSize:CGSizeMake(0, 750)];[_subScrollView setBackgroundColor:[UIColor blueColor]];for (int i = 0; i <= 6; i++) {UIButton * btn = [[UIButton alloc] initWithFrame:CGRectMake(50, 100*i+50, ViewWidth-100, 50)];[btn setBackgroundColor:[UIColor blackColor]];btn.layer.cornerRadius = 10;[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];[btn setTitle:[NSString stringWithFormat:@"Btn - 0%d", i] forState:UIControlStateNormal];[_subScrollView addSubview:btn];}}return _subScrollView;
}
/** 第二页的 WebView */
- (UIWebView *)webView {if (!_webView) {//  将 webView 放在第二页_webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, ViewHeight, ViewWidth, ViewHeight)];[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com"]]];}return _webView;
}
/** 第一页与第二页过渡时 显示的 提示Label */
- (UILabel *)up_down_showLabel {if (!_up_down_showLabel) {_up_down_showLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, ViewWidth, up_down_showLabel_minHeight)];[_up_down_showLabel setBackgroundColor:[UIColor grayColor]];[_up_down_showLabel setTextColor:[UIColor darkGrayColor]];[_up_down_showLabel setTextAlignment:NSTextAlignmentCenter];}return _up_down_showLabel;
}- (void)viewDidLoad {[super viewDidLoad];/** 设置最外层 ScrollView 的内容高度 为两页 */[_scrollView setContentSize:CGSizeMake(0, 2*ViewHeight)];/** 首先 将第一页的内容添加 */[_scrollView addSubview:self.subScrollView];
}#pragma mark - UIScrollViewDelegate- (void)scrollViewDidScroll:(UIScrollView *)scrollView {//  往往这样的页面 会有多个ScrollView,所以其设置tag,以示区别switch (scrollView.tag) {case 1: {   //  这里 tag 为 1的是最外层的ScrollViewfloat offsetY = scrollView.contentOffset.y;if (offsetY>0 && offsetY<ViewHeight*0.5) {//  这种情况为 第一页已到底部,再向下滑动 就要显示第二页的内容/** 将 提示Label显示在第一页底部 */_up_down_showLabel.y = ViewHeight;[_up_down_showLabel setText:@" -- 上拉呀 -- "];[_scrollView addSubview:self.up_down_showLabel];/** 让 提示Label 高度/透明度随滑动位移变化 */[_up_down_showLabel setAlpha:offsetY*1.0f/50];_up_down_showLabel.height = offsetY>up_down_showLabel_minHeight ? offsetY : up_down_showLabel_minHeight;} else if (offsetY>ViewHeight*0.5 && offsetY<ViewHeight) {//  这种情况为 第而页已到顶部,再向上滑动 就要显示第一页的内容[_up_down_showLabel setText:@" - 下拉呀 - "];[_scrollView addSubview:_up_down_showLabel];/** 让 提示Label 高度/透明度随滑动位移变化 */[_up_down_showLabel setAlpha:(ViewHeight-offsetY)*1.0f/50];_up_down_showLabel.height = ViewHeight-offsetY>up_down_showLabel_minHeight ? ViewHeight-offsetY : up_down_showLabel_minHeight;/** 将 提示Label显示在第二页顶部 */_up_down_showLabel.y = ViewHeight-_up_down_showLabel.height;} else if (offsetY == ViewHeight) {//  滑到 第二页的时候if (!_webView) {/** 如果 webView 还没有加载,就加载并添加到视图中 */[_scrollView addSubview:self.webView];}} else {//  其他位置 就移除 提示Label[_up_down_showLabel removeFromSuperview];}} break;}
}@end

淘宝产品详情页 上拉加载图片详情 效果实现相关推荐

  1. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  2. SmartRefreshLayout 下拉刷新上拉加载框架

    首先,放上该智能第三方库的GitHub地址https://github.com/scwang90/SmartRefreshLayout/tree/master 使用步骤 1.在build.gradle ...

  3. react上拉加载更多

    react 前言 最近在写的项目中有上拉加载更多的需求.抽空就来写一篇文章. 上拉加载更多,下拉刷新,在原生 App 上经常都用到,既符合用户的使用习惯,也有很多成熟的库可以直接拿来使用.那么在Web ...

  4. 小程序:区域滚动、下拉刷新、上拉加载更多

    一.简介 开发环境:小程序.uniapp 实现功能:列表页面实现,区域滚动.下拉刷新.上拉加载更多,效果如图: 正常: 下拉刷新: 上拉加载:  二.实现 2.1.代码 <scroll-view ...

  5. react native学习笔记13——FlatList上拉加载

    我们可以利用官方组件RefreshControl实现下拉刷新功能,但React Native官方没有提供相应的上拉加载的组件,因此在RN中实现上拉加载比下拉刷新要复杂一点. 虽然没有直接提供上拉加载的 ...

  6. 商品详情页上拉查看详情开源库

    商品详情页上拉查看详情 目录介绍 01.该库介绍 02.效果展示 03.如何使用 04.注意要点 05.优化问题 06.部分代码逻辑 07.参考案例 01.该库介绍 模仿淘宝.京东.考拉等商品详情页分 ...

  7. 移动端web页面列表类上拉加载,查看详情,iframe嵌套第三方页面遇到的问题以及解决办法...

    1.移动端上拉加载 网上有很多成熟的插件,比如iscroll.在这里介绍一下用jquery和js写的上拉加载方法.使用原生的去写上拉加载更多需要三个高度去做对比,以新闻类列表举例,首先需要整个dom的 ...

  8. 仿选股宝选个头条上下拉加载一页的功能

    一.前言 最近有一个需求就是上拉.下拉整体刷新一页数据,并且将下一页数据整体划出显示,上一页数据则消失.这个类似于选股宝的头条选股的效果,先上图. 二.实现心路历程 拿到这个需求,我就想,我靠,没搞过 ...

  9. uni-app 小程序项目三 1. 商品列表、过滤器、封装商品item组件、上拉加载、节流阀、下拉刷新、2. 商品详情、轮播图、商品价格闪烁问题 3.加入购物车、vuex、持久化存储、mixiins

    1.0 创建 goodslist 分支 1.1 定义请求参数对象 为了方便发起请求获取商品列表的数据,我们要根据接口的要求,事先定义一个请求参数对象: data() {return {// 请求参数对 ...

最新文章

  1. 工作中的感悟 (一)初来工作之感
  2. matlab fittype 求不出参数,[转]matlab 中fit fittype
  3. 对话框中加入标签页的5种方法
  4. Python零碎知识(7):硬性出错
  5. 信奥中的数学:计算几何
  6. 动态时间归整/规整/弯曲(Dynamic time warping,DTW)
  7. python 生成式 生成器
  8. JSP登录中Session的用法
  9. GEE系列:第7单元 利用GEE进行遥感影像分类【随机森林分类】
  10. c语言 牛逼代码,装逼技巧:程序员如何用代码证明自己牛逼!
  11. ActiveMQ 之安全认证
  12. 东方财富股吧评论爬虫和情绪分析
  13. 与引导文件系统/vmfs/devices..的备用设备之间的连接已丢失,主机配置更改将不会保存到持久存储中...
  14. v4l2_async_subdev_notifier_register 分析
  15. 基于python实现在线听音乐(QQ音乐)
  16. [INSTALL_FAILED_ALREADY_EXISTS]
  17. Apache2.4 下载和安装 - Win10
  18. 微信公众号wx.getlocation
  19. 吐血整理!程序员常见的几种变现方式!
  20. unity游戏重新开始,退出,停止,继续按钮及打包发布

热门文章

  1. 高中化学竞赛能用计算机吗,加分取消不用参加奥赛了?这8个竞赛国家支持、高校认可...
  2. 【Python个人学习笔记】--- pyc文件(了解)
  3. 推广海报你需要注意的几个小细节
  4. bzoj4605 崂山白花蛇草水 权值线段树套kd树
  5. java代码json_JSON 解析(java代码)
  6. 绿盟科技技术大会 TechWorld 2016完美谢幕
  7. java用代码实现星期菜谱_基于JAVA的菜谱大全接口调用代码实例
  8. 华为harmonyos官网,HarmonyOS
  9. java 泛型缺点_Go 与 泛型: 优点 or 缺陷
  10. 路由器CFE-固件-NVRAM