Добавьте CATransform3D к CATransition в UIView - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь анимировать вид с помощью CATransition с типом перехода push, а также мне нужно сделать трехмерное вращение. Я попробовал это и уже получил полу ожидаемое поведение. Посмотрите на код ниже.

            let animationDuration: Float = 5.0
            let transition = CATransition.init()
            transition.duration = CFTimeInterval(animationDuration)
            transition.type = kCATransitionPush
            transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
            transition.subtype = kCATransitionFromRight
            containerView.layer.add(transition, forKey: nil)

            var rotateIdentity = CATransform3DIdentity
            rotateIdentity.m34 = -1.0/1000
            let rotate = CATransform3DRotate(rotateIdentity, .pi / 6, 0.0, 1.0, 0.0)

            UIView.animate(withDuration: 2.5, animations: {
                containerView.layer.transform = rotate
            }, completion: { _ in
                let rotate2 = CATransform3DRotate(rotateIdentity, .pi / 6, 0.0, 0.0, 0.0)
                UIView.animate(withDuration: 2.5, animations: {
                    containerView.layer.transform = rotate2
                }, completion: nil)
            })

Таким образом, фактический результат таков: представление скользит из текущей позиции вправо (как и ожидалось), но вращение не начинается с начала анимации перехода

...