当前位置: 首页 > news >正文

iOS:高仿闲鱼、京东等列表底部分页视图

简介

引用大佬们说的话:“所谓流量就是用户的注意力”。引起了用户的注意才能延长使用APP的时长,才能有机会引流到核心模块,才能提升日活,才能提高广告及其它收入,才能提高程序员我们的薪资。

所以,作为开发APP的相关人员:产品经理、开发、测试等,要尽全力保证产品的易用性、流畅性、稳定性等。

比如对于主流的首页设计,现在就有一种新的设计方式。列表上部分是热门内容,滚动到最下面就是分类的推荐内容。下图可以直观的表达:

正所谓“没有对比就没有伤害”,我们再来看看旧版本设计,如下图:

先来吐槽一下旧版本设计:

  • “热门”指示title放在了导航栏上面,用户不一定看得到,所以点击切换或滚动切换的概率就很低。(而且有些APP居然没有滚动切换,只能点击最上面的title切换,转换率就更低了!)
  • “热门”页面的分类视图与导航栏的分类视图同时出现,增加了用户的理解成本。小白用户左右滚动可能都不知道自己在滚动哪个视图。

再在表扬一下新版本设计:

  • 用户看热门往下滚动,滚动底部,自然而然就是分类推荐视图。当前的用户行为没有被打断(不需要用户思考想去看热门,再点击或滚动切换到热门,而是默认展示给用户,用户的思路一直处于一个浏览模式,没有操作的思考)。用户的注意力没有被分散,然后分类推荐的文章,大家应该都知道标题都很冲击(比如说“美女直播后忘记关摄像头,这画面太....”,“乔丹是最佳得分后卫?他可能不会答应!”,再配上一定的美图),面对这些“诱惑”用户大概率忍不住就点进去了,然后就被各种标题吸引,咱们的日使用时间就蹭蹭往上涨了。

综上所述,许多APP都采用了这种设计。有代表性的是:闲鱼首页、京东我的页面、转转首页、中央天气预报首页等。当然你的产品经理,也会慢慢跟风采用该设计的。

Github地址

下载源码,一睹为快!JXPageListView

好了,下面来看看JXPageListView的效果。

效果预览

说明GIF
上下左右滚动交互
MJRefresh刷新加载
HUD loading加载
保存底部列表滚动状态
不保存底部列表滚动状态

使用

  • 初始化pageListView
self.pageListView = [[JXPageListView alloc] initWithDelegate:self];
复制代码
  • 配置分类视图pinCategoryView
self.pageListView.pinCategoryView.titles = self.titles;
复制代码
  • 成为mainTableView的代理,像使用普通UITableView一样使用它;
self.pageListView.mainTableView.dataSource = self;
self.pageListView.mainTableView.delegate = self;
复制代码
  • UITableViewDataSource, UITableViewDelegate代理方法实现
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1 + “你的顶部内容section数量”;//底部的分类滚动视图需要作为最后一个section
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 2) {
        //Tips:最后一个section(即listContainerCell所在的section)需要返回1
        return 1;
    }
    //返回你的顶部内容 row number
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 2) {
        //Tips:最后一个section(即listContainerCell所在的section)返回listContainerCell的高度
        return [self.pageListView getListContainerCellHeight];
    }
     //返回你的顶部内容 cell height
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.section == 2) {
        //Tips:最后一个section(即listContainerCell所在的section)配置listContainerCell
        return [self.pageListView configListContainerCellAtIndexPath:indexPath];
    }
   //返回你的顶部内容 cell
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    //Tips:需要传入mainTableView的scrollViewDidScroll事件
    [self.pageListView mainTableViewDidScroll:scrollView];
}
复制代码
  • JXPageViewDelegate代理方法实现
//返回底部的列表视图
- (NSArray<UIView<JXPageListViewListDelegate> *> *)listViewsInPageListView:(JXPageListView *)pageListView {
    return self.listViewArray;
}
复制代码

至此主要的api已经实现,就集成列表底部分页视图了。更多细节及原理请查看源码。

Github地址

下载源码,一睹为快!JXPageListView

JXPagingView推荐

如果你只想找一个顶部只有少量视图(类似TableHeaderView的概念),推荐你看我的这个库:JXPagingView

JXCategoryView推荐

如果你想要支持所有主流APP分类切换效果的框架,推荐你看我的这个库,目前已经1.4k stars:JXCategoryView

相关文章:

  • 使用MDI 和 XtraTabbedMdiManager 后 选项卡切换后Ribbon 合并后不选中MDI子窗...
  • java~springboot~ibatis Invalid bound statement (not found)原因
  • c#正则表达式
  • 解码 | 25 分钟开发分布式架构的转账小程序
  • 删除2018年以前的文件
  • UTF-8编码规则
  • Java 实现阿里云短信
  • Slog80_打包ArthurSlogMarkdownEditor编辑器至mac平台dmg安装包GET!
  • 一个网站同时监听两个端口
  • DataSet数据转换string字符串
  • Android 各种路径详细说明
  • 【SQL Server DBA】日常巡检1:数据库空间、状态、使用的监控
  • Java并发编程之Java CAS操作
  • jvm对类的加载顺序测试
  • Python正则表达式初识(二)
  • [PHP内核探索]PHP中的哈希表
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • C++11: atomic 头文件
  • canvas 五子棋游戏
  • es6--symbol
  • HTTP那些事
  • Linux CTF 逆向入门
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 解决iview多表头动态更改列元素发生的错误
  • 坑!为什么View.startAnimation不起作用?
  • 利用DataURL技术在网页上显示图片
  • 前端相关框架总和
  • 使用Swoole加速Laravel(正式环境中)
  • 手写一个CommonJS打包工具(一)
  • 为视图添加丝滑的水波纹
  • 智能合约开发环境搭建及Hello World合约
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (27)4.8 习题课
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (9)目标检测_SSD的原理
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (论文阅读40-45)图像描述1
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十六)一篇文章学会Java的常用API
  • *1 计算机基础和操作系统基础及几大协议
  • .NET Core 2.1路线图
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .NET中两种OCR方式对比
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?