2014-04-07 123 views
0

我有一个自定义故事板segue动画,但它没有以我想要的方式出现。我不想在视图控制器中“擦除”,而是希望它将当前视图控制器与旁边的新视图控制器“推开”。 (不像推播,更像是在照片上滑动时在照片应用中看到的效果)。有任何想法吗?谢谢。定制故事板Segue

- (void)perform { 

UIViewController *currentViewController = self.sourceViewController; 
UIViewController *newViewController = self.destinationViewController; 


[currentViewController.view addSubview:newViewController.view]; 


newViewController.view.transform = CGAffineTransformMakeScale(0.05, 0.05); 


CGPoint originalCenter = newViewController.view.center; 

newViewController.view.center = self.originatingPoint; 

[UIView animateWithDuration:1.9 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 

        newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0); 
        newViewController.view.center = originalCenter; 
       } 
       completion:^(BOOL finished){ 
        [newViewController.view removeFromSuperview]; // remove from temp super view 
        [currentViewController presentViewController:newViewController animated:NO completion:NULL]; // present VC 
       }]; 
} 

+0

那么你发布的代码是不是工作? – meda

+0

我建议只使用[currentViewController presentViewController:newViewController animated:YES completion:nil]; 使用UIViewAnimationOptionCurve进行自定义动画时,它只会执行页面滑动动画,而不会从左向右滑动。 –

+0

@meda这个幻灯片在当前视图控制器之上的新视图控制器中,我想让它将新视图控制器和当前视图控制器推出。 – user3186310

回答

1
animations:^{ 
    newViewController.view.transform = CGAffineTransformMakeScale(1.0, 100.0); 
    newViewController.view.center = originalCenter; 
} 

它看起来像你不是动画当前视图控制器的视图。我也不确定为什么要设置新视图控制器视图的转换。我期望你的代码看起来是这样的:

CGPoint originalCenter = currentViewController.view.center; 
CGPoint newCurrentVCCenter = CGPointMake(currentViewController.view.center.x - screenWidth, currentViewController.center.y); 
[UIView animateWithDuration:1.9 
        delay:0.0 
       options:UIViewAnimationOptionCurveEaseInOut 
animations:^{ 
    currentViewController.center = newCurrentVCCenter; 
    newViewController.view.center = originalCenter; 
} 
completion:^(BOOL finished){ 
    // clean up here 
}]; 

换句话说,你正在移动currentViewController.viewnewViewController.view,因此,目前看来,新观点都左移相同量,并在同一时间。

+0

我在哪里放置动画块? – user3186310

+0

你现在拥有它的地方。我只是拿了你的代码片段。请注意,您可能需要稍微调整一下 - 例如,您需要提供'screenWidth'的定义。我的主要观点是,你希望两个视图都会一起滑动,但你的动画块只能移动其中一个视图。 – Caleb

+0

那么第二个动画块呢?谢谢。 – user3186310