1

如何UITableView在开始时为每一行添加动画?我想要每一行从左到右或从右到左的动画效果。

没有达到预期效果的相关代码:

float originalY = cell.frame.origin.y;
float originalH = cell.bounds.size.height;

[UITableViewCell animateWithDuration:1.0f delay:0.0f options:UIViewRowAnimationLeft animations:^{
    cell.frame = CGRectMake(cell.frame.origin.x, (originalY + originalH), cell.bounds.size.width, 0);

}completion:^(BOOL finished) {
    NSLog(@"Animation is complete");
}];
4

3 回答 3

0

在Animated-TableViewCell处查看源代码。

于 2013-07-19T05:26:52.220 回答
0

在哪里放置该代码?如果它在 cellForRowAtIndexPath 中,则表示它为时过早,因为尚未绘制表格。

尝试重新加载 tavleview,将单元格设置为 cellForRow 中的初始帧。(如果您希望它从左侧进入,请将 tableView.width 作为 x 点。)一旦重新加载完成,然后创建一个函数单元格并调用您编写的动画块。

于 2013-07-19T05:27:00.577 回答
0

使用此方法:

+ (id)indexPathWithIndexes:(const NSUInteger [])indexes length:(NSUInteger)length;

前任 :

NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:HERE_PASS_INDEXES length:HERE_PASS_LENGTH];
[your_table reloadRowsAtIndexPaths:indexPath withRowAnimation:UITableViewRowAnimationLeft];

或用作:

    - (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;

// Make the index paths //

NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:1 inSection:1];
NSIndexPath* indexPath2 = [NSIndexPath indexPathForRow:2 inSection:1];
NSIndexPath* indexPath3 = [NSIndexPath indexPathForRow:3 inSection:2];
NSIndexPath* indexPath4 = [NSIndexPath indexPathForRow:5 inSection:2];
// Add them in an index path array
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, indexPath2,indexPath3,indexPath4, nil];


[your_tablename reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];
于 2013-07-19T05:22:26.247 回答