я пытаюсь получить 3d флипа анимации между контроллерами зрения, как этот3D покадровой анимация для просмотра контроллеров в быстрой
https://github.com/nicklockwood/CubeController
Для анимации .. на основе обратного значения я устанавливаю по часовой стрелке или против направления тактового направления
Это код, я использую для анимации ..
class CusNavAnimController : NSObject, UIViewControllerAnimatedTransitioning {
var reverse: Bool = false
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
return 0.25
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView()
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toView = toViewController.view
let fromView = fromViewController.view
//
toView.frame = UIScreen.mainScreen().bounds
fromView.frame = UIScreen.mainScreen().bounds
let direction: CGFloat = reverse ? -1 : 1
let const: CGFloat = -0.005
toView.layer.anchorPoint = CGPointMake(direction == 1 ? 0 : 1, 0.5)
fromView.layer.anchorPoint = CGPointMake(direction == 1 ? 1 : 0, 0.5)
var viewFromTransform: CATransform3D = CATransform3DMakeRotation(direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0)
var viewToTransform: CATransform3D = CATransform3DMakeRotation(-direction * CGFloat(M_PI_2), 0.0, 1.0, 0.0)
viewFromTransform.m34 = const
viewToTransform.m34 = const
containerView!.transform = CGAffineTransformMakeTranslation(direction * containerView!.frame.size.width/2.0, 0)
toView.layer.transform = viewToTransform
containerView!.addSubview(toView)
UIView.animateWithDuration(transitionDuration(transitionContext), animations: {
containerView!.transform = CGAffineTransformMakeTranslation(-direction * containerView!.frame.size.width/2.0, 0)
fromView.layer.transform = viewFromTransform
toView.layer.transform = CATransform3DIdentity
}, completion: {
finished in
containerView!.transform = CGAffineTransformIdentity
fromView.layer.transform = CATransform3DIdentity
toView.layer.transform = CATransform3DIdentity
fromView.layer.anchorPoint = CGPointMake(0.5, 0.5)
toView.layer.anchorPoint = CGPointMake(0.5, 0.5)
if (transitionContext.transitionWasCancelled()) {
toView.removeFromSuperview()
} else {
fromView.removeFromSuperview()
}
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
})
}}
Я получаю анимацию, но это не то же самое, как связь мерзавец хаба, обеспечивающего .. Для моего кода .. fromview немного вернуться и toview приходить на фронт с этой точки .. может кто-нибудь предложить мне изменения
Могу ли я получить 3D-эффект для просмотра контроллеров переходов используя TransitionFlipFromLeft, TransitionFlipFromRight .. Можете ли вы сказать мне, где добавить это .. ?? – Sunil
Вы используете его, чтобы перевернуть вид, а не контроллер представления. Сделайте следующее, в котором вы хотите, чтобы анимация произошла: '[UIView transitionFromView: firstView toView: secondView duration: 1.0 options: UIViewAnimationOptionTransitionFlipFromLeft завершение: nil]' – Hash88
Он будет переворачиваться, но при переворачивании он должен быть в 3d-манере, как я могу установить, что это должно быть так: https://github.com/nicklockwood/CubeController – Sunil