私の目標は、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に戻ることができますが、これは私が望んでいたものではありません。
"...しかし、後方アニメーションは[仕事?]"ではありません。それは本当に情報がありません。何が起こるのですか?あなたのelse節は発射ですか?ビューが入れ替わっていますが、間違ったアニメーションが表示されていますか? –
はいelse節が起動しています、私はそれをテストしました – user1895268
私が求めた他の情報はどうですか?さあ、男よ、20の質問をしないで! –