J'ai été à cela pendant des heures et ne peux pas comprendre ce que je fais mal. J'ai bricolé des transitions de contrôleur de barre d'onglet personnalisé en se conformant à UITabBarControllerDelegate
comme décrit dans mon précédent Swift: Problems with custom UIView.transition?UIViewControllerAnimatedTransitioning ne fonctionne qu'une fois sur deux?
Je ne pas utiliser les boutons normaux de la barre d'onglet story-board, je passe selectedIndex programme. Mon problème est que seulement avec cela mis en œuvre:
func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
let animator = ModalTransition()
animator.fromView = fromVC.view
animator.toView = toVC.view
return animator
}
les animations ET la commutation de l'indice se produit seulement une fois sur deux. J'ai des boutons personnalisés pour basculer l'index et à chaque fois, rien ne se passe lorsque je clique sur le bouton de commutation. Voici mon animation:
//
// ModalTransition.swift
// Adventures In Design
//
// Created by Skylar Thomas on 8/28/17.
//
import UIKit
class ModalTransition: NSObject, UIViewControllerAnimatedTransitioning {
weak var transitionContext: UIViewControllerContextTransitioning?
var fromView = UIView()
var toView = UIView()
var duration = 1.1
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval {
return 1
}
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
containerView.addSubview(toView)
containerView.sendSubview(toBack: toView)
print("ANIMATING")
UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: .curveLinear, animations: {
self.fromView.center.y += 900
}, completion: {
finished in
//only works every OTHER click
transitionContext.completeTransition(!transitionContext.transitionWasCancelled)
self.fromView.center.y -= 900
})
}
}
Qu'est-ce qui cause cela? Est-ce quelque chose?
Ne fonctionne toujours que sur un autre. Pouvez-vous montrer un exemple d'animation? Peut-être que je n'anime pas correctement – skyguy
Bien sûr .. Vérifiez la réponse éditée. Faites-moi savoir si cela aide –
Quelque chose là-dedans l'a corrigé. Merci! – skyguy