2017-03-02 4 views
0

나는 내가 애니메이션을하지 않고 있지만, 애니메이션 어떤 경우에는 내 currentVC을 해고하려는 일부 시나리오에서는 아래신속한 방법을 사용하여 iOS에서 애니메이션 맞춤 설정을 구성하는 방법은 무엇입니까?

class DismissSegue: UIStoryboardSegue { 
override func perform() { 
    sourceController.dismissViewControllerAnimated(true, completion: nil) 
} 
} 

같은 사용자 정의 SEGUE을 만들었습니다. 어떻게 가능합니까? @IBInspectable을 설정하려했지만 스토리 보드에 속성이 표시되지 않습니다. 모든 종류의 도움을 주시면 감사하겠습니다. 감사.

+0

해고하는 경우 일반적으로'dismiss' 호출에'true' 또는'false'를 지정하면됩니다. 그리고 나서 그것은 우리를 위해 그것을 처리합니다. 아니면 어떤 이유로 긴장을 풀 필요가 있습니까? 아니면 맞춤 전환을 수행하고 있습니까 (예 : 'UIViewControllerAnimatedTransitioning')? 아마도 당신이 해결하려고하는 더 광범위한 문제를 기술 할 수 있습니다. – Rob

+0

사실 나는 그것을 편집했습니다 ... 나는 애니메이션이 항상 true 인 사용자 정의 segue를 만들었지 만 지금은 false/true로 변경해야합니다. 상황에 따라 다릅니다. 어떻게 편집 할 수 있습니까? @ 롭 – coolly

답변

0

생각을 몇 :

  • 당신이 사용하기로 결정하는 경우 DismissSegue, 당신이 할 수있는, 스위프트 3 :

    class DismissSegue: UIStoryboardSegue { 
        override func perform() { 
         let animated = (source as? OptionalAnimation)?.animateDismiss ?? true 
         source.dismiss(animated: animated) 
        } 
    } 
    

    또는 스위프트 2.3 :

    class DismissSegue: UIStoryboardSegue { 
        override func perform() { 
         let animated = (source as? OptionalAnimation)?.animateDismiss ?? true 
         sourceController.dismissViewControllerAnimated(animated, completion: nil) 
        } 
    } 
    

    Where

    protocol OptionalAnimation { 
        var animateDismiss: Bool { get } 
    } 
    

    원본보기 컨트롤러는 (a)이 프로토콜을 준수합니다. (b) animateDismiss 속성을 설정합니다. 솔직히

  • , 당신이 당신 perform 방법에 dismissViewControllerAnimated/dismiss를 호출하는 경우,이 같은 SEGUE를 사용에서 당신을 낙담 것입니다. 당신은 일반적으로 해고에 대한 segue를 사용하지 않을 것이며, 해지하려는 View Controller의 @IBAction에서 dismissViewControllerAnimated/dismiss으로 전화하면됩니다. 그런 다음보다 직접적으로보기에 animated 플래그를 설정할 수 있습니다.

    또는 segue를 사용하고 싶다면 unwind segue를 사용하십시오. 예를 들어, 하나의 애니메이션에 긴장을 풀고 하나의 긴장을 풀고 (IB로 설정 한) 하나의 긴장을 풀어 적절한 것으로 시작하십시오.

  • 맞춤 애니메이션을 사용하는 경우 일반적으로 맞춤 전환을 사용합니다 (WWDC 2013 Custom Transitions Using View Controllers 참조). 그런 다음 수행하고 싶은 애니메이션이나 수행하고 싶지 않은 애니메이션을 제어 할 수 있습니다. 분명히, 이것은 더 복잡 합니다만, 커스텀 애니메이션을하고 있다면, 이것이 태클을 일으키는 방법입니다.

관련 문제