私は2つのビューコントローラ間を移行するためにカスタムセグを使用しています。これは私がそれらの遷移の1のために使用していセグエです:カスタムSegueは、ターゲットビューコントローラを表示する前に黒にアニメーション化します
class SegueFromRight: UIStoryboardSegue{
override func perform() {
// Assign the source and destination views to local variables.
let src = self.source.view as UIView!
let dst = self.destination.view as UIView!
// Get the screen width and height.
let screenWidth = UIScreen.main.bounds.size.width
let screenHeight = UIScreen.main.bounds.size.height
// Specify the initial position of the destination view.
dst?.frame = CGRect(0.0, screenHeight, screenWidth, screenHeight)
// Access the app's key window and insert the destination view above the current (source) one.
let window = UIApplication.shared.keyWindow
window?.insertSubview(dst!, aboveSubview: src!)
// Animate the transition.
UIView.animate(withDuration: 0.4, animations: {() -> Void in
src?.frame = (src?.frame.offsetBy(dx: -screenWidth, dy: 0.0))!
dst?.frame = (dst?.frame.offsetBy(dx: -screenWidth, dy: 0.0))!
}) { (Finished) -> Void in
self.source.present(self.destination as UIViewController,
animated: false,
completion: nil)
}
}
}
セグエは完璧に動作、しかし、アニメーションは、私はそれが欲しいのですかではありません。デスティネーションビューコントローラを「プッシュ」すると、それは黒く表示されます。アニメーションが終了すると、実際のView Controllerに移動します。アニメーションが終了すると、新しいView Controllerがロードされるだけなので、それはそうだと思います。しかし、アニメーションが滑らかに見えるように、新しいView Controllerをどのようにプリロードするのですか? 宛先ビューコントローラ(以前のソースビューコントローラ)がすでにロードされているため、巻き戻しセグは黒いアニメーションを表示しません。
'super.perform()'を呼び出すことを忘れないでください。 – erenkabakci