关于tableView的刷新动画一般熟知的刷新行或段的动画,而刷新全部数据源的reloadData动画UITableView却没有提供。本次来mark下利用转场动画CATransition制作reloadData时的动画效果。
使用场景:问卷调查翻页时,无需创建多个控制器无限压栈,通过一个页面只刷新tableView数据源达到翻页的效果。
/*! @brief 跳转下一页 */ -(void)jumpToNext{ if (curIndex < (questions.count-1)) { curIndex++; //动画 CATransition * animation = [CATransition animation]; animation.type = kCATransitionReveal; //动画切换风格(揭开效果) animation.subtype = kCATransitionFromRight; //动画切换方向(右侧) animation.duration = 0.4f; [_tableView.layer addAnimation:animation forKey:nil]; //“key”可能是任何字符串,nil指针也是一个有效的键 [_tableView reloadData]; if(curIndex == (questions.count-1)){ [stepControl setRightBtnSubmit]; //如果翻到最后一页,改变右button为提交 } }else if(curIndex == (questions.count-1)){ //处于最后一页,点击提交按钮的操作 } }
/*! @brief 返回上一页 */ -(void)popToLast{ if (curIndex == (questions.count-1)) { [stepControl setRightBtnNormal]; //如从最后一页点击上一步,改变右button为xia'yi'bu } if (curIndex>0) { curIndex--; //动画 CATransition * animation = [CATransition animation]; animation.type = kCATransitionMoveIn; //动画切换风格(慢慢进入并覆盖效果) animation.subtype = kCATransitionFromLeft; //动画切换方向 animation.duration = 0.3f; [_tableView.layer addAnimation:animation forKey:nil]; [_tableView reloadData]; } }