Bunu başarmak için yerleşik bir yöntem olduğuna inanıyorum, ancak iOS7'de tanıtılan Özel Geçişleri kullanabilirsiniz. Dışarıda çok sayıda harika eğitici var. Aşağıda bazı bağlantılar ekledim ve yeni görüntü denetleyicisini yukarıdan nasıl kaydıracağınızı gösteren bazı örnek kodlar ekledim.
Siteler kontrol etmek:
(Not: Bir UIViewController
sitesindeki view
üçüncü ve dördüncü dökümanında erişilen bir şekilde eskidir.
Öncelikle, ben zaten yaptık kabul edeceğim senin film şeridi kurmak için ihtiyacımız olacak: Yerine toViewController.view
size
) örneği transitionContext.viewForKey(UITransitionContextToViewKey)
kullanmalıdır.
İkinci olarak, UIViewControllerAnimatedTransitioning
'a uygun bir NSObject
alt sınıfına ihtiyacınız vardır. Bu, bir görünüm denetleyicisinden diğerine geçişi kontrol etmek için kullanılacaktır.
RayWenderlich: How To Make A View Controller Transition Animation Like in the Ping App öğretici açıklandığı gibi class TransitionManager : NSObject, UIViewControllerAnimatedTransitioning {
let animationDuration = 0.5
func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return animationDuration
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)!
containerView.addSubview(toView)
let finalFrame = containerView.bounds
let initalFrame = CGRect(x: 0, y: -finalFrame.height, width: finalFrame.width, height: finalFrame.height)
toView.frame = initalFrame
UIView.animateWithDuration(animationDuration,
animations: { toView.frame = finalFrame },
completion: { _ in transitionContext.completeTransition(true) })
}
}
, kendi UINavigationController
'ın temsilci bir kurulum gerekir.
class NavigationControllerDelegate: NSObject, UINavigationControllerDelegate {
let transitionManager = TransitionManager()
func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if operation == .Push {
return transitionManager
}
return nil
}
}
Ve işte bu olmalıdır: Aşağıdaki NavigationControllerDelegate
sınıf bir itme segue yürütülüyor zaman TransitionManager
bir örneğini döndürmek için kullanılacaktır! Bunu genişletmek için Etkileşimli Geçişlere göz atmanızı öneririz.