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