2017-01-11 7 views
-1

私の目標は、view1からview2へのフリップアニメーション、またはその逆のフリップアニメーションを実行することです。 私は、viewControl以外のビューを反転したいだけですカスタムフリップアニメーションsegue - Swift 3

以下のように設定します。 私は、私のストーリーボード内のビューコントローラ(fromViewController)をnavigationControllerに埋め込みました。私は2番目のビューコントローラ(toViewController)にセグを描画し、それをカスタムセグにしました。 ここでは、フリップアニメーションを追加して、ビューコントローラーのビューを左から右に、右から左にフリップさせたいと考えています。 前方アニメーションは既に(fromViewControllerからtoViewControllerまで)動作しますが、後方アニメーションは機能しません。 私はここで多くの同様の質問を確認しましたが、私のニーズに合った答えを見つけることができませんでした。

誰かが私を助けてくれることを願っています。

カスタムセグのクラスはFlipSegueです。

import UIKit 

extension UIViewController{ 
    var isVisible: Bool{ 
     return self.isViewLoaded && self.view.window != nil 
    } 
} 

class FlipSegue: UIStoryboardSegue { 

    override func perform() { 
     let fromViewController = self.source 
     let toViewController = self.destination 

     if fromViewController.isVisible{ 
      UIView.transition(from: fromViewController.view, to: toViewController.view, duration: 1, options: .transitionFlipFromLeft, completion: nil) 
     } 
     else{ 
      UIView.transition(from: toViewController.view, to: fromViewController.view, duration: 1, options: .transitionFlipFromRight, completion: nil) 
     } 
    } 
} 

FYI: はここに私のコードですtoViewControllerはNavigationControllerの一部ではありません。

EDIT:ナビゲーションコントローラの左側にあるUIBarButtonをタップしてセグを実行します。 ButtonはFlipSegueクラスのperform関数を呼び出しています。たぶん問題は、toViewControllerがナビゲーションスタックの一部ではないということですか?だから私はそれをナビゲーションスタックに追加して、私は戻るボタンを持って、私は標準のアニメーションでfromViewControllerに戻ることができますが、これは私が望んでいたものではありません。

+0

"...しかし、後方アニメーションは[仕事?]"ではありません。それは本当に情報がありません。何が起こるのですか?あなたのelse節は発射ですか?ビューが入れ替わっていますが、間違ったアニメーションが表示されていますか? –

+0

はいelse節が起動しています、私はそれをテストしました – user1895268

+0

私が求めた他の情報はどうですか?さあ、男よ、20の質問をしないで! –

答えて

0

私はこれを試していませんが、どちらの場合でもおそらくfrom:fromViewcontroller.viewを使用してください。なぜなら、バックステップでは、まだ開始VCであるからです。

+0

申し訳ありませんが、これは動作しません..前と同じ動作 – user1895268

関連する問題