动画UITableViewCell的飞行

时间:2013-09-15 23:35:50

标签: iphone ios

当触摸一个tableview单元格时,我希望单元格的文本飞到一个新位置。但这似乎不起作用。请告知这里出了什么问题。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.tableView1 deselectRowAtIndexPath:indexPath animated:YES];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];    
    CGRect cellRect = [cell.superview convertRect:cell.frame toView:self.view];
    // The cell should be shown in table as well, so create a new cell    
    UITableViewCell *view1 = [[UITableViewCell alloc] initWithFrame:cellRect];
   [self.view addSubview:view1];
   [UIView animateWithDuration:0.5
                      delay:0
                      options: UIViewAnimationCurveEaseOut
                      animations:^{
                     view1.frame = CGRectMake(10, 10, 0, 0);
                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                     [view1 removeFromSuperview];
                     [self songAddedToQ:indexPath];
                 }];
}

1 个答案:

答案 0 :(得分:1)

好的,这就是我解决它的方法。

-(UIImage*) returnCellImage:(UITableViewCell*)cell
{    
    UIGraphicsBeginImageContext(cell.frame.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [cell.layer renderInContext:context];
    UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return screenShot;
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.tableView1 deselectRowAtIndexPath:indexPath animated:YES];
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    UIImage *image = [self returnCellImage:cell];
    CGRect cellRect = [cell.superview convertRect:cell.frame toView:self.view];
    UIImageView *view1 = [[UIImageView alloc] initWithFrame:cellRect];
    [view1 setImage:image];
    [self.view addSubview:view1];
    [UIView animateWithDuration:0.5
                      delay:0
                      options: UIViewAnimationCurveEaseOut
                      animations:^{
                          view1.frame = CGRectMake(10,10, 0, 0);
                 }
                 completion:^(BOOL finished){
                     [view1 removeFromSuperview];
                 }];

}