我想知道是否可以在自定义Segue转换中使用CATransition。我创建了CustomSegueTransition.m文件,并在我希望进行过渡的自定义segue类中引用了它。

这是我的CustomSegueTransition.m文件的代码:

#import "CustomSegueTransition.h"
#import "QuartzCore/QuartzCore.h"

@implementation CustomSegueTransition

-(void) perform {

    // set up an animation for the transition the content
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.25];
    [animation setType:kCATransitionPush];
    [animation setSubtype:kCATransitionFromRight];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.25];

    [UIView commitAnimations];
}

@end


它没有任何错误警告,但是当按下按钮导致segue转换时,转换不会执行。我是否在CATransition代码中缺少某些内容?

谢谢!

最佳答案

@格兰特

我没有完整的答案,但是我确实注意到您从未调用过新视图,因此没有过渡。我不知道您要拍摄的是推送,弹出还是模态,但这是您需要添加的代码类型:

UIViewController *src = (UIViewController *) self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;
[src presentModalViewController:dst animated:YES];


要么

    [src presentViewController:<#(UIViewController *)#> animated:<#(BOOL)#> completion:<#^(void)completion#>];


我相信设置自定义动画还有其他问题,尽管我对解决方案感兴趣,但我没有答案。

10-05 20:20