2009-08-04 2 views
2

У меня возникли проблемы с переворачиванием просмотров в iPhone.Переход на iPhone в iPhone

У меня есть два вида в appDelegate. Я хочу перевернуть их, как только пользователь нажимает кнопку.

У меня есть следующий код:

CATransition *transition = [CATransition animation]; 

transition.duration = 0.75; 
[transition @"twist"]; 
[transition setSubtype:@"fromRight"]; 

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

[[window layer] addAnimation:transition forKey:nil]; 


[window addSubview:self.s.view]; 
[CATransaction commit]; 

Но это не работает. Кто-нибудь знает лучший способ перевернуть взгляды на стороне окна.

То, что я делаю, вызывает метод из appDelegate в соответствующем viewControllers, чтобы перевернуть представления.

+0

[переход @ "кручение"]; <- это ошибка? Что это значит? – mk12

ответ

4

См. The Elements Пример кода. В частности AtomicElementViewController-flipCurrentView.

+0

Только вместо просмотра содержимого вам необходимо добавить окно следующим образом: [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromRight forView: cache cache: YES]; Если вы не хотите использовать просмотр контента и делаете это на стороне окна. – rkb

+0

Мне любопытно, почему вы сделали бы это с самим окном? Это очень необычный подход; обычно вы используете contentView окна и оставляете окно в покое. –

17

Если вы используете SDK 3.0, и все, что вам нужно, это простой переход с переворотом (например, приложение «Погода»), вам не нужно спускаться до CATransition. Переходы анимации более высокого уровня UIView будут делать то, что вы хотите, но с 3.0 есть еще более простой способ: просто представить свой новый вид в качестве модального контроллера представления и установить стиль перехода модального перехода. Находясь в первом контроллере:

UIViewController *controllerForSecondView = ..; 
controllerForSecondView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:controllerForSecondView animated:YES]; 

Флип снова с помощью dismissModalViewController.

Documentation Reference

+0

Спасибо за отличный совет! NB любому, кто читает: согласно ответам Джареда, настройка должна быть установлена ​​на «controllerForSecondView», а не на «я». –

+0

Совершенно верно, я должен был отредактировать это много лет назад, когда Джаред впервые отправил свой ответ. Теперь я исправил это. –

6

@Luke - спасибо, этот пример помог мне ... 1 коррекция хотя (на основе UIViewController.h)

UIViewController *controllerForSecondView = ..; 
controllerForSecondView.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
[self presentModalViewController:controllerForSecondView animated:YES]; 

из файла заголовка комментариев:

// Определяет стиль перехода, который будет использоваться для этого контроллера вида, если он представлен в виде модально. Установите это свойство на контроллер представления, который будет представлен, а не ведущий. // По умолчанию UIModalTransitionStyleSlideVertical. @property (nonatomic, assign) UIModalTransitionStyle modalTransitionStyle

+0

Хорошо заметили! Я, должно быть, пропустил это, но это то, что вы получаете, когда на самом деле не выполняете код, который вы пишете;) –

Смежные вопросы