iOS进阶指南iOS开发骚操作iOS 开发

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

2018-09-18  本文已影响273人  开源者联盟

简介

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

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

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


scrollInteraction.gif

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


normalLayout.gif

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

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

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

Github地址

下载源码,一睹为快!JXPageListView

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

效果预览

说明 GIF
上下左右滚动交互 scrollInteraction.gif
MJRefresh刷新加载 headerLoading.gif
HUD loading加载 hudLoading.gif
保存底部列表滚动状态 listScrollStateSave.gif
不保存底部列表滚动状态 listScrollStateNoSave.gif

使用

self.pageListView = [[JXPageListView alloc] initWithDelegate:self];
self.pageListView.pinCategoryView.titles = self.titles;
self.pageListView.mainTableView.dataSource = self;
self.pageListView.mainTableView.delegate = self;
- (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];
}
//返回底部的列表视图
- (NSArray<UIView<JXPageListViewListDelegate> *> *)listViewsInPageListView:(JXPageListView *)pageListView {
    return self.listViewArray;
}

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

Github地址

下载源码,一睹为快!JXPageListView

JXPagingView推荐

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

JXCategoryView推荐

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

上一篇下一篇

猜你喜欢

热点阅读