MPFoldTransition
使用's 完全可以做到这一点transitionFromView: toView:...
。我创建了一个示例项目,如果您愿意,我可以链接到该项目,但这一切都归结为:
- (void)addNewTableCellToIndexPath:(NSIndexPath *)indexPath {
// Add the new object to the datasource and reload the row
[dataSourceArray insertObject:@"New" atIndex:indexPath.row];
[self.tableView beginUpdates];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
//setup temporary cell
UITableViewCell *fromCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];
[fromCell setBackgroundColor:[[self.tableView cellForRowAtIndexPath:indexPath] backgroundColor]];
//setup cell to animate to
UITableViewCell *toCell = [self.tableView cellForRowAtIndexPath:indexPath];
[toCell.textLabel setText:dataSourceArray[indexPath.row]];
//add fold animation to the cells create above
[MPFoldTransition transitionFromView:fromCell
toView:toCell
duration:0.4
style:MPFoldStyleUnfold
transitionAction:MPTransitionActionNone
completion:^(BOOL finished) {
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}];
}
About 是一个将索引路径作为参数的函数。将您希望添加带有折叠过渡的单元格的索引路径发送给它,它将在表格上创建一个空白临时单元格以进行折叠,同时将其余单元格向下移动。它并不完美,主要是因为我还没有找到一种方法来改变UITableViewRowAnimation
's 的持续时间以与折叠持续时间完美匹配。
无论哪种方式,这应该足以让你继续前进。希望这可以帮助!