Страницы

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

суббота, 8 февраля 2020 г.

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

#ipad #objective_c #ios #iphone


В моем проекте пока стоит стандартный переход от сцены к сцене при push. 
А мне задумалось сделать что-то поинтереснее.
Как это можно реализовать?
У меня в основе стоит Navigation Controller.
И кстати когда я пытался сделать переход типа modal - симулятор прекращал работу
приложения.
Ну и хочется сделать что-то поинтереснее чем четыре модальных варианта.
Заранее благодарен за помощь )    


Ответы

Ответ 1



Вот вам история в картинках: 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. Удачи!

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

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