iPhone SDK: оптимизация UIModalTransitionStyleFlipHorizont - PullRequest
2 голосов
/ 21 сентября 2009

Я хочу перевернуть мой новый ModalView с очень высокой производительностью, но у нового View есть много подпредставлений, поэтому производительность Flip-Effect очень плохая. На самом деле я делаю это с:

[controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:backSideController animated:YES];

Я тоже попробовал с

CATransition *transition = [CATransition animation];
transition.duration = 0.75;
[transition setType: @"flip"];
[transition setSubtype:@"fromRight"];

transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[transition setFillMode:@"extended"];

[[self.view layer] addAnimation:transition forKey:nil];


[self.view addSubview: backSideController.view];
[CATransaction commit];

С Core-Animation он работает немного быстрее ... Есть ли другие способы оптимизировать эту задачу? например Добавление представления, когда анимация останавливается, и просто переворачивать скриншот, пока анимация не останавливается?

1 Ответ

0 голосов
/ 14 марта 2012

Попробуйте получить доступ к backsideController.view перед началом анимации. Это приведет к вызову loadView и viewDidLoad для backsideController. Я предполагаю, что это ваш удар по производительности - все, что загружает и выделяет, заставляет анимацию заикаться.

Вам не нужно ничего фантастического, вы можете сделать что-то вроде:

if (backsideController.view == nil)
    NSLog(@"Where's my view?!");

перед вашим другим кодом, выше.

Я не верю, что наличие множества подпредставлений вызывает проблемы с производительностью на флипе; Я почти уверен (не смотря на ваш код или проверяя инструменты, что вам следует делать!), Что проблема заключается во времени, которое требуется для загрузки и выделения компонентов представления.

Кроме того, я бы придерживался presentModalViewController, если он делает то, что вы хотите. Наличие всего этого дополнительного кода во втором примере - если только он не нужен для функциональности - это просто головная боль при обслуживании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...