marshroute

Форк
0
/
TransitionContextsCreator.swift 
89 строк · 4.1 Кб
1
import UIKit
2
@testable import Marshroute
3

4
final class TransitionContextsCreator
5
{
6
    static func createCompletedTransitionContextFromPresentationTransitionContext(
7
        sourceTransitionsHandler: AnimatingTransitionsHandler,
8
        sourceViewController: UIViewController,
9
        targetViewController: UIViewController,
10
        navigationController: UINavigationController?,
11
        targetTransitionsHandlerBox: CompletedTransitionTargetTransitionsHandlerBox)
12
        -> CompletedTransitionContext
13
    {
14
        var pushAnimationLaunchingContext = PushAnimationLaunchingContext(
15
            targetViewController: targetViewController,
16
            animator: NavigationTransitionsAnimator()
17
        )
18
        
19
        pushAnimationLaunchingContext.sourceViewController = sourceViewController
20
        pushAnimationLaunchingContext.navigationController = navigationController
21
        
22
        let presentationAnimationLaunchingContextBox = PresentationAnimationLaunchingContextBox.push(
23
            launchingContext: pushAnimationLaunchingContext
24
        )
25
        
26
        let sourceAnimationLaunchingContextBox: SourceAnimationLaunchingContextBox
27
            = .presentation(launchingContextBox: presentationAnimationLaunchingContextBox)
28
        
29
        navigationController?.pushViewController(targetViewController, animated: false)
30
        
31
        return CompletedTransitionContext(
32
            transitionId: TransitionIdGeneratorImpl().generateNewTransitionId(),
33
            sourceTransitionsHandler: sourceTransitionsHandler,
34
            targetViewController: targetViewController,
35
            targetTransitionsHandlerBox: targetTransitionsHandlerBox,
36
            storableParameters: nil,
37
            sourceAnimationLaunchingContextBox: sourceAnimationLaunchingContextBox
38
        )
39
    }
40
    
41
    static func createRegisteringCompletedTransitionContext(
42
        sourceTransitionsHandler: AnimatingTransitionsHandler,
43
        targetViewController: UIViewController,
44
        targetTransitionsHandlerBox: CompletedTransitionTargetTransitionsHandlerBox)
45
        -> CompletedTransitionContext
46
    {
47
        let sourceAnimationLaunchingContextBox: SourceAnimationLaunchingContextBox
48
            = .resetting(launchingContextBox: .registering)
49
        
50
//        let resettingAnimationLaunchingContextBox = ResettingAnimationLaunchingContextBox.settingNavigationRoot(
51
//            launchingContext: <#T##SettingAnimationLaunchingContext#>)(
52
//        
53
//        
54
//        sourceTransitionsHandler.launchResettingAnimation(
55
//            launchingContextBox: &sourceAnimationLaunchingContextBox
56
//        )
57
        
58
        return CompletedTransitionContext(
59
            transitionId: TransitionIdGeneratorImpl().generateNewTransitionId(),
60
            sourceTransitionsHandler: sourceTransitionsHandler,
61
            targetViewController: targetViewController,
62
            targetTransitionsHandlerBox: targetTransitionsHandlerBox,
63
            storableParameters: nil,
64
            sourceAnimationLaunchingContextBox: sourceAnimationLaunchingContextBox
65
        )
66
    }
67
    
68
    static func createPresentationTransitionContext() -> PresentationTransitionContext {
69
        return PresentationTransitionContext(
70
            pushingViewController: UIViewController(),
71
            animator: NavigationTransitionsAnimator(),
72
            transitionId: TransitionIdGeneratorImpl().generateNewTransitionId()
73
        )
74
    }
75
    
76
    static func createRegisteringEndpointNavigationControllerTransitionContext() -> ResettingTransitionContext {
77
        return ResettingTransitionContext(
78
            registeringEndpointNavigationController: UINavigationController(),
79
            navigationTransitionsHandler: NavigationTransitionsHandlerImpl(
80
                navigationController: UINavigationController(),
81
                transitionsCoordinator: TransitionsCoordinatorImpl(
82
                    stackClientProvider: TransitionContextsStackClientProviderImpl(),
83
                    peekAndPopTransitionsCoordinator: PeekAndPopUtilityImpl()
84
                )
85
            ),
86
            transitionId: TransitionIdGeneratorImpl().generateNewTransitionId()
87
        )
88
    }
89
}
90

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.