简体   繁体   中英

Uitableview Cell Animation like Secret App

Any idea, How can i implement- Secret App Settings list cell animation.

I was trying with this, but not any success because its adding all rows same time.

[self.tableview reloadSections:sectionIndexSet withRowAnimation:UITableViewRowAnimationBottom];

If i am inserting one by one row then this animation is not working from bottom to top animation.

Any suggestion how can i do this ?

Try this implementation:

//From UITableViewDelegate calls
- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath{
    CGRect myRect = [tableView rectForRowAtIndexPath:indexPath];

    //instead of 568, choose the origin of your animation
    cell.frame = CGRectMake(cell.frame.origin.x,
                            cell.frame.origin.y + 568,
                            cell.frame.size.width,
                            cell.frame.size.height);

    [UIView animateWithDuration:0.5 delay:0.1*indexPath.row options:UIViewAnimationOptionCurveEaseInOut animations:^{
        //instead of -30, choose how much you want the cell to get "under" the cell above
        cell.frame = CGRectMake(myRect.origin.x,
                                myRect.origin.y - 30,
                                myRect.size.width,
                                myRect.size.height);

    } completion:^(BOOL finished){
        [UIView animateWithDuration:0.5 animations:^{
            cell.frame = myRect;
        }];

    }];
}

Swift-4 Version of Claudio's Answer

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {


        let rect = tableView.rectForRow(at: indexPath)

        cell.frame = CGRect(x: cell.frame.origin.x,
                            y: cell.frame.origin.y + 568,
                            width: cell.frame.size.width,
                            height: cell.frame.size.height)

        UIView.animate(withDuration: 0.5, delay: 0.1*Double(indexPath.row), options: UIViewAnimationOptions.curveEaseInOut, animations: {
            cell.frame = CGRect(x: rect.origin.x,
                                y: rect.origin.y-30,
                                width: rect.width,
                                height: rect.height)
        }) { (completed) in
            UIView.animate(withDuration: 0.5, animations: {
                cell.frame = rect
            })
        }

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM