Страницы

Поиск по вопросам

воскресенье, 14 апреля 2019 г.

Как в Objective-C изменить стандартный переход в Storyboard из одной сцены к другой

В моем проекте пока стоит стандартный переход от сцены к сцене при 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
Удачи!

Комментариев нет:

Отправить комментарий