Я создал подкласс UIStoryboardSegue, чтобы создать переход слева направо. Это работает, однако, есть черная вертикальная полоса или фон, который на мгновение виден между двумя контроллерами представления, которые наносят эффект. (Я хочу, чтобы переход выглядел как нормальный справа налево, показывать переход, но в противоположном направлении). Кто-нибудь знает, что может быть причиной этого или как от него избавиться? Вот мой код:
#import "customSegue.h"
#import "QuartzCore/QuartzCore.h"
@implementation customSegue
-(void)perform {
UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
UIViewController *destinationController = (UIViewController*)[self destinationViewController];
CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}
@end
Edit:
Я думал, что соберу некоторые исправления, которые я нашел, хотя ни один из них не работает для меня.
Установите цвет фона представляемого контроллера представления на белый
Set self.definesPresentationContext = YES;
на контроллере представления представления или установите флажок «Определить контекст» для ВК в раскадровке из принятого ответа здесь .
Укажите контекст следующим образом:
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
UIViewController *destinationController = (UIViewController*)[self destinationViewController]
[sourceViewController presentViewController:destinationController animated:NO completion:nil];
из принятого ответа здесь .