首页 >iOS开发

动画来实现TableView的展开与关闭功能

2017-07-14 11:27 编辑: 天明天 分类:iOS开发 来源:

本文为CocoaChina网友天明天投稿

这个小demo是之前项目中使用的一个需求,单独拿出来,效果还不错。主要是利用tableView自带刷新效果和scrollView的动画来实现TableView的展开与关闭功能。

1499914653650301.gif

特别需要注意的几个点:

1.要在代理方法- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath中控制row的行高来实现展开与关闭。不要根据行数来进行控制。

2.刷新多个section的方法你要知道,很容易崩。这是主要方法:

 NSMutableArray* oldIndexPathArray = [NSMutableArray arrayWithCapacity:0];
        for (int i = 0; i < oldCount; i++) {
            NSIndexPath* indexPath = [NSIndexPath indexPathForRow:i inSection:oldSection];
            [oldIndexPathArray addObject:indexPath];
        }
        NSMutableArray* selectedIndexPathArray = [NSMutableArray arrayWithCapacity:0];
        for (int i = 0; i < selectedCount; i++) {
            NSIndexPath* indexPath = [NSIndexPath indexPathForRow:i inSection:selectSection];
            [selectedIndexPathArray addObject:indexPath];
        }
        NSMutableArray* rowsArray = [NSMutableArray arrayWithCapacity:0];
        [rowsArray addObjectsFromArray:oldIndexPathArray];
        [rowsArray addObjectsFromArray:selectedIndexPathArray];
        
        [_tableView reloadRowsAtIndexPaths:rowsArray withRowAnimation:UITableViewRowAnimationBottom];

前提是方法

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
// 这个地方要全部加载进去 要不然单独刷新某Section时会崩溃 使用`heightForRowAtIndexPath`代理方法来控制展开与关闭
    NSArray *array =[_origionArr objectAtIndex:section];
    
    return array.count;
}

3.若果Section的下面有多处的cell的东西,可以添加代码cell.clipsToBounds = YES;

源码地址:https://github.com/chenXming/TableViewUnfold.git

搜索CocoaChina微信公众号:CocoaChina
微信扫一扫
订阅每日移动开发及APP推广热点资讯
公众号:
CocoaChina
我要投稿   收藏文章
上一篇:IOS开发入门你们准备好了吗?
下一篇:iOS处理网络请求的返回的数据Null问题
我来说两句
发表评论
您还没有登录!请登录注册
所有评论(0

综合评论

相关帖子

sina weixin mail 回到顶部