В моем проекте пока стоит стандартный переход от сцены к сцене при push. А мне задумалось сделать что-то поинтереснее. Как это можно реализовать? У меня в основе стоит Navigation Controller. И кстати когда я пытался сделать переход типа modal - симулятор прекращал работу приложения. Ну и хочется сделать что-то поинтереснее чем четыре модальных варианта. Заранее благодарен за помощь )
Ответ
Вот вам история в картинках:
1) Начинаете с того, что добавляете новый класс:
2) Делаете его подклассом UIStoryboardSegue, называете его, как хотите:
3) Добавляете в получившийся .m-метод метод perform:
#import "CustomSegue.h"
#import
@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 = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom
[sourceViewController.navigationController.view.layer addAnimation:transition
forKey:kCATransition];
[sourceViewController.navigationController pushViewController:destinationController animated:NO];
}
@end
4) Идете в Storyboard. Удерживая Control, тянете от одного контроллера к другому мышь - отпускаете, выбираете custom
5) Указываете в свойствах этой Segue, что её класс - CustomSegue.
6) Добавляете в проект фреймворк QuartzCore (если он ещё не добавлен).
7) Пробуете разные способы анимации через изменение опций в методе perform
Удачи!
Комментариев нет:
Отправить комментарий