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

时间:2015-07-01 19:10:57

标签: ios swift uiviewanimation uiviewanimationtransition

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

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

而不是实际为UITableViewCell制作动画,它可能就足够了#34;假的"它。一种可行的方法是将控制器视图中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;
    }];
}

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