Junior — Middle
Πώς μπορεί να υλοποιηθεί μια προσαρμοσμένη κινούμενη μετάβαση κατά τη μετάβαση μεταξύ οθονών σε έναν Navigation Controller;
sobes.tech AI
Απάντηση από AI
Για να υλοποιήσετε μια προσαρμοσμένη κινούμενη μετάβαση μεταξύ οθονών σε UINavigationController, πρέπει να χρησιμοποιήσετε τα πρωτόκολλα UIViewControllerAnimatedTransitioning και UINavigationControllerDelegate.
-
Δημιουργήστε μια κλάση που υλοποιεί το
UIViewControllerAnimatedTransitioning, όπου περιγράφετε τη λογική της κινούμενης εικόνας στα μεθόδους:transitionDuration(using:)— διάρκεια της μετάβασηςanimateTransition(using:)— η ίδια η μετάβαση
-
Ορίστε ως αντιπρόσωπο του UINavigationController ένα αντικείμενο που υλοποιεί το
UINavigationControllerDelegate, και στη μέθοδο:func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationController.Operation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? { // επιστρέψτε το αντικείμενο της κινούμενης εικόνας σας return customAnimator }
Παράδειγμα ενός απλού προσαρμοσμένου κινούμενου animator:
class CustomAnimator: NSObject, UIViewControllerAnimatedTransitioning {
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 0.3
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
guard let toView = transitionContext.view(forKey: .to) else {
transitionContext.completeTransition(false)
return
}
let container = transitionContext.containerView
toView.alpha = 0
container.addSubview(toView)
UIView.animate(withDuration: transitionDuration(using: transitionContext), animations: {
toView.alpha = 1
}) { finished in
transitionContext.completeTransition(finished)
}
}
}