IOS开发之蘑菇街框架

最近公司的项目完全仿了蘑菇街客户端的框架,自己从网上找了一下,没有发现源码,问遍各大QQ群也没有结果,上周五晚上一直在思考这个框架如何搭建,周六早上有了灵感,写了一半,今天接着完善了一下。在这里和大家分享一下。
我先把效果让大家看一下,然后结合效果说一下自己的实现思路吧。
效果图:
IOS开发之蘑菇街框架_第1张图片
首先呢,最上面的小猫图片,这个将来可以是一张图片或者是一个轮播都可以的,这里暂时称作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

你可能感兴趣的:(项目中剥离的demo)