最近公司的项目完全仿了蘑菇街客户端的框架,自己从网上找了一下,没有发现源码,问遍各大QQ群也没有结果,上周五晚上一直在思考这个框架如何搭建,周六早上有了灵感,写了一半,今天接着完善了一下。在这里和大家分享一下。
我先把效果让大家看一下,然后结合效果说一下自己的实现思路吧。
效果图:

首先呢,最上面的小猫图片,这个将来可以是一张图片或者是一个轮播都可以的,这里暂时称作headerView。在ViewController 中设置一个最底端的mainTableView,让mainTableView的tableViewHeaderView指向headerView。接下来再看红色部分,这个部分是一个滚动条上面有一些类目可以供用户选择,这里就暂且用一个UIView的实例segmentBack实现一下。大家根据动画效果可以发现segmentBack其实是mainTableView的sectionHeaderview所以,我们可以通过如下代码实现:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{UIView *segmentBack =[[UIView alloc] initWithFrame:CGRectMake(0, 0, kDeviceWidth, 40)];segmentBack.backgroundColor =[UIColor redColor];return segmentBack;}

我们接着再往下面看左右滑动首先我们让mainTableView的单元格数量为1,section数量为1,然后在第一个单元格上添加containScroll实现左右滑动。为了切换几个smallTableview这里为了把代码模块化,每个切换的页面用VC.view来实现。然后在为其添加tableView作为子视图。并将VC.view添加到containScroll上。这样子思路差不多了。可以了么,哈哈,当然不可以,因为我们还没有考虑到手势的冲突呢。我们发现上下滑动的话,最底层的mainTableView的需要识别上下滑动的手势,还有就是VC.view上的smallTableview的也需要识别上下滑动的手势。怎么办呢,我们都知道UITableView继承自UIScrollView, 在这里就可以使用UIScrollviewDelegate的-(void)scrollViewDidScroll:(UIScrollView *)scrollView 这个方法,用来对当前的smallTableview的偏移量进行判断,如果偏移量达到某个点,当前smallTableview不可以滑动,同样的道理,对于mainTableView我们也使用这个代理方法来对mainTableView的偏移量进行判断。这样子就解决了手势的冲突了。
smallTableview的关键代码如下:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{[delegate judgeScrollViewWhenScroll:scrollView];}
-(void)judgeScrollViewWhenScroll:(UIScrollView *)scrollView{if (scrollView.contentOffset.y==0) {mainTableView.scrollEnabled =YES;scrollView.scrollEnabled =NO;NSLog(@"scroll conentOffsetY %f",scrollView.contentOffset.y);}
}

mainTableView的关键代码如下:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{if (mainTableView.contentOffset.y==140) {//这个140是有headerview和section的headerView的高度之和来决定,大家到时候可以修改targetVC.mainTableView.scrollEnabled =YES;mainTableView.scrollEnabled =NO;NSLog(@"TableView conentOffsetY %f",mainTableView.contentOffset.y);}}

demo下载地址:蘑菇街框架
大家哪位朋友如果积分不够的话,可以在博客下留言写下邮箱,我发给大家,私信我也可以哦^_^。

不好意思,前一段时间分享的demo有点小bug,我修复了以后本来打算把原来的那个给删掉的,发现删不了了,好苦恼。我把最新的demo分享给大家,大家可以比较下哦。
修复后的demo下载地址:demo

IOS开发之蘑菇街框架相关推荐

  1. iOS 开发之照片框架详解

    一. 概要 在 iOS 设备中,照片和视频是相当重要的一部分.最近刚好在制作一个自定义的 iOS 图片选择器,顺便整理一下 iOS 中对照片框架的使用方法.在 iOS 8 出现之前,开发者只能使用 A ...

  2. iOS开发库和框架大全

    音频 AudioBus:下一代 App 到 App 的实时音频路由.官网 AudioKit:一个强大的音频合成,处理和分析的工具集.官网 EZAudio:一个基于 Core Audio 的 iOS/O ...

  3. 【iOS开发】Alamofire框架的使用二 高级用法

    Alamofire是在URLSession和URL加载系统的基础上写的.所以,为了更好地学习这个框架,建议先熟悉下列几个底层网络协议栈: URL Loading System Programming ...

  4. 黑马程序员——零基础学习iOS开发——13 Foundation框架

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  5. IOS开发学习---Fundation框架和UIKit框架

    框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS 提供了许多可在应用程序开发中使用的框架.要使 ...

  6. ios 开发常用第三方框架

    键盘管理 TPKeyboardAvoiding IQKeyboardManager(1.2.8) 弹窗HUD MBProgressHUD(0.9.2) SVProgressHUD UIView+Toa ...

  7. iOS开发常用第三方框架

    2019独角兽企业重金招聘Python工程师标准>>> 键盘管理 TPKeyboardAvoiding IQKeyboardManager(1.2.8) 弹窗HUD MBProgre ...

  8. iOS开发 常用的框架demo

    总结了一些常用的demo,包括获取验证码.AVPlayer.AFNetworking.Masonry.高仿微信.高仿网易.K线图.折线图.柱状图.手势解锁.TouchID.直播.动画等,大家可以根据需 ...

  9. iOS开发之第三方框架Masonry

    2019独角兽企业重金招聘Python工程师标准>>> 第三方框架Masonry 该框架可以大大简化AutoLayout使用过程中对控件添加约束的代码. 框架地址:https://g ...

最新文章

  1. webcdn故障处理一例
  2. oracle分页数据,oracle 分页 数据重复 数据不正确
  3. Java布尔类的compareTo()
  4. 构建、测试和部署驱动程序
  5. pyCharm 当中使用VirtualEnv
  6. 00后感兴趣的“微醺生意”,居然被这位70后老兵做成功了?
  7. MySQL分页查询慢的方案解决
  8. mysql和sqlserver分页的区别_关于SQLServer和MySQL 查询分页语句区别
  9. plsql轻量版异常机制
  10. C/C++ 实现文件透明加解密
  11. Dart 语言不如 Kotlin?这里列了 13 个原因
  12. Ajax.Responders
  13. ***php调试总结
  14. Python 学习总结(一):掌握基础知识,查缺补漏
  15. 大众点评_token及登录分析
  16. 公司员工考勤系统Java代码
  17. 90-0004Web颜色标准【中英文颜色对照】
  18. 7步学会在Windows下上架iOS APP流程
  19. 2021-2027全球及中国运动营养和体重管理食品行业研究及十四五规划分析报告
  20. 计算机上如何设置访问密码忘了怎么办,电脑设置的密码忘记了怎么办

热门文章

  1. Unity 实用代码 小工具
  2. Python和Google AppEngine开发基于Google架构的应用软件
  3. 为什么有那么多人相信K线?
  4. 迈柯唯Servo-s中文编修手册
  5. LintCode 买卖股票的最佳时机I II III IV
  6. Dota2数据Dota2接口电竞api开发比分网分享
  7. [蓝桥杯][2015年第六届真题]穿越雷区
  8. ResNet论文翻译及解读
  9. [学习] 08 提高背书速度新玩法
  10. c语言红酒编程题,葡萄酒基础知识试题解析一