iOS uitablewviewcell 的视图转换,转换时移动单元格标签

iOS view transition from uitablewviewcell, move cell labels while transitioning

您好,我正在尝试实现从 UITableViewCell 到新控制器的转换,在转换时我想将单元格的标签移动到新控制器中新标签的位置,当关闭控制器时,标签应该回到单元格中的原始位置。效果在 link 中复制:http://framerjs.com/examples/preview/#detail-view-transition.framer

任何人都可以指出我正确的方向吗?

与其实际为 UITableViewCell 设置动画,不如 "fake" 它可能就足够了。一种可行的方法是将控制器视图中的 UITableViewCell 的框架传递给下一个视图控制器。然后,当下一个视图加载时,将相应的视图动画化到从您刚刚通过的那一帧开始的位置。可能看起来像这样。

@property (assign, nonatomic) CGRect cellFrameForNextView;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
     self.cellFrameForNextView = cell.frame;
     self.cellFrameForNextView.origin = [cell convertPoint:cell.frame.origin toView:self.view];
     [self performSegueWithIdentifier:@"showNextView" sender:self];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     if([segue.identifier isEqualToString:@"showNextView"]) {

        NextViewController *vc = (NextViewController*)[segue destinationViewController];
        vc.frameToStartAnimation = self.cellFrameForNextView;
     }
}

然后在您的下一个视图中

@property (assign, nonatomic) CGRect frameToStartAnimation;
@property (strong, nonatomic) UIView *viewThatWillAnimate;

-(void)viewDidAppear:(animated)animated 
{
    [super viewDidAppear:animated]

    CGRect frameToFinishAnimation = self.viewThatWillAnimate.frame;
    self.viewThatWillAnimate.frame = self.frameToStartAnimation;
    [UIView animationWithDuration:0.3 animations:^{
       self.viewThatWillAnimate.frame = frameToFinishAnimation;
    }];
}

这不是一个完美的解决方案,但我希望它能让您朝着正确的方向找到解决方案:)