CAT переходная белая вспышка в фоновом режиме? - PullRequest
2 голосов
/ 22 июня 2011

Я пытаюсь вставить pushViewController слева, а не справа, следующим образом:

Page14Controller * controller = [[Page14Controller alloc] initWithNibName:@"Page14Controller" bundle:nil];

CATransition* transition = [CATransition animation];
transition.duration = 0.3;
transition.type = kCATransitionPush;
//                transition.type = kCATransitionMoveIn; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
//kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; 
//kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[self.navigationController.view.layer addAnimation:transition forKey:nil];

[self.navigationController pushViewController:controller animated:NO];

Когда я это делаю, контроллер тока становится белым, что выглядит ужасно. Почему это происходит? Я попытался установить фон альфа текущего представления на 0.

Ответы [ 2 ]

7 голосов
/ 23 июня 2011

Я понял, что, по-видимому, вызывает белую вспышку: это был фон главного окна. Установка этого в альфа = 0 помогает эффект белого. Похоже, , что kCATransitionPush на самом деле затухает при просмотре, отталкивающемся от экрана , и, очевидно, если то, что находится под этим, зеленое, то оно станет зеленым. Было бы неплохо, если бы это не исчезло, но это другой вопрос.

0 голосов
/ 22 июня 2011

Я бы не стал слишком сильно мешать представлению UIViewController.

Самый простой способ достичь желаемого - это что-то вроде этого:

UINavigationController * nc = self.navigationController;
NSArray * viewControllers = ;
NSMutableArray * newControllers = [NSMutableArray arrayWithArray:[nc viewControllers]];
[newControllers insertObject:controller atIndex:newControllers.count-1];
nc.viewControllers = newControllers;
[nc popViewControllerAnimated:YES];

Обратите внимание, что заменяет контроллер вида сверху новым контроллером вместо простого нажатия на него; это может быть не то, что вам нужно (но если вы используете его для имитации смены страниц, вы, вероятно, не захотите постоянно выдвигать больше контроллеров, пока не закончится память).

...