我有两个viewControllers:
ViewController1
一组复杂的子视图控制器,中间有一个imageView
ViewController2
包含imageView的scrollView
我想要实现的是两个viewControllers之间的转换,它通过从viewController 1捏合imageView来触发,使其放大并切换到viewController 2.当转换结束时,imageView应该放大到目前为止因为它在捏合手势触发过渡期间被缩放.
同时我想支持在执行缩放转换时平移图像,这样就像缩放一样,处于结束状态的图像将被转换到它被平移到的位置.
到目前为止,我已经尝试过Hero过渡pod和我自己编写的自定义viewController过渡.英雄转换的问题是图像没有正确地捕捉到第二个viewController中的结束状态.我对自定义viewController转换的问题是我无法同时进行缩放和平移.
有没有人知道如何在Swift中实现它?非常感谢帮助.
在我的应用程序中,我正在使用由平移手势触发的UIPercentDrivenInteractiveTransition来解除viewController.我期待我将viewController拖到右边,因为我正在平移它.然而,当我慢慢地平移时,我得到一个小故障:viewController从左到右快速跳跃一点.
这可以在这里看到:https://youtu.be/3IEtId1w7jM
这是过渡的代码:
class FilterHideTransition: UIPercentDrivenInteractiveTransition {
let viewController: FilterViewController
var enabled = false
private let panGesture = UIPanGestureRecognizer()
private let tapGesture = UITapGestureRecognizer()
init(viewController: FilterViewController) {
self.viewController = viewController
super.init()
panGesture.addTarget(self, action: #selector(didPan(with:)))
panGesture.cancelsTouchesInView = false
panGesture.delegate = self
tapGesture.addTarget(self, action: #selector(didTap(with:)))
tapGesture.cancelsTouchesInView = false
tapGesture.delegate = self
viewController.view.addGestureRecognizer(panGesture)
viewController.view.addGestureRecognizer(tapGesture)
}
}
//MARK: - Actions
private extension FilterHideTransition {
@objc func didPan(with recognizer: UIPanGestureRecognizer) {
let translation = recognizer.translation(in: viewController.view)
let percentage = translation.x …
Run Code Online (Sandbox Code Playgroud)