动画化UITableViewCell的飞行

动画化UITableViewCell的飞行

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

- (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];
                 }];
}

最佳答案

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

-(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];
                 }];

}

关于iphone - 动画化UITableViewCell的飞行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18818576/

10-12 21:28