IOS开发之蘑菇街框架
近期公司的项目全然仿了蘑菇街client的框架,自己从网上找了一下,没有发现源代码。问遍各大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开发之蘑菇街框架的更多相关文章
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html 一. 概况 本文接着 iOS 开 ...
- ReactiveCocoa - iOS开发的新框架
本文转载至 http://www.infoq.com/cn/articles/reactivecocoa-ios-new-develop-framework ReactiveCocoa(其简称为RAC ...
- iOS 开发之照片框架详解(1)
http://kayosite.com/ios-development-and-detail-of-photo-framework.html/comment-page-1 一. 概要 在 iOS 设备 ...
- iOS开发--SQLite重要框架FMDB的使用
什么是FMDB: FMDB是一个和iOS的SQLite数据库操作相关的第三方框架.主要把C语言操作数据库的代码用OC进行了封装.使用者只需调用该框架的API就能用来创建并连接数据库,创建表,查询等. ...
- 【iOS开发】Alamofire框架的使用二 高级用法
Alamofire是在URLSession和URL加载系统的基础上写的.所以,为了更好地学习这个框架,建议先熟悉下列几个底层网络协议栈: URL Loading System Programming ...
- iOS 开发之照片框架详解(3)
http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 三. 常用方法的封装 虽然 Phot ...
随机推荐
- NetworkX-根据权重画图
load_data = sio.loadmat(load_path) #阈值处理 mat=np.array(load_data['R']) mat[mat<0]=0 mat[mat<0.4 ...
- 【BZOJ4016】【FJOI2014】最短路径树问题
题意: Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列 ...
- WebRTC | Failed to execute 'setLocalDescription' on 'RTCPeerConnection': Failed to parse SessionDescription. a=msid: Missing track ID in msid attribute.
1.问题回放 使用如下代码获取局域网IP报错 (代码来源:https://github.com/diafygi/webrtc-ips 日期:2019-02-16) Uncaught (in promi ...
- POJ-2752 Seek the Name, Seek the Fame 字符串问题 KMP算法 求前后缀串相同数木
题目链接:https://cn.vjudge.net/problem/POJ-2752 题意 给一个字符串,求前缀串跟后缀串相同的前缀串的个数 例:alala 输出:a, ala, alala 思路 ...
- 改造vue-quill-editor: 结合element-ui上传图片到服务器
前排提示:现在可以直接使用封装好的插件vue-quill-editor-upload 需求概述 vue-quill-editor是我们再使用vue框架的时候常用的一个富文本编辑器,在进行富文本编辑的时 ...
- python学习笔记:第六天
一.元组(通用格式a=(1,),结束后面加个逗号,不同与数组是中括号,只能是只读的,不能修改,是有序的): 列表之间可以嵌套(列表之间嵌套,嵌套元组,是有序的):a[b[1,2],c[3,4]],输出 ...
- [Java] 使用 Apache的 Commons-net库 实现FTP操作
因为最近工作中需要用到FTP操作,而手上又没有现成的FTP代码.就去网上找了一下,发现大家都使用Apache的 Commons-net库中的FTPClient. 但是,感觉用起来不太方便.又在网上找到 ...
- ActiveMQ学习总结(9)——Linux中安装ActiveMQ
1.新建一个文件夹activeMQ mkdir /server 2.授权 chmod 777 /server 3.下载activeMQ安装包,拷贝到/activeMQ目录下 apache-a ...
- poj-1151-Atlantis-线段树求面积并
非常裸的线段树求面积并. 坐标须要离散化一下. #include<stdio.h> #include<iostream> #include<stdlib.h> #i ...
- LeetCode 之 Merge Sorted Array(排序)
[问题描写叙述] Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array ...