小编Men*_*nno的帖子

由夹点和平移手势识别器同时触发的交互式ViewController转换

在此输入图像描述

我有两个viewControllers:

ViewController1

一组复杂的子视图控制器,中间有一个imageView

ViewController2

包含imageView的scrollView

我想要实现的是两个viewControllers之间的转换,它通过从viewController 1捏合imageView来触发,使其放大并切换到viewController 2.当转换结束时,imageView应该放大到目前为止因为它在捏合手势触发过渡期间被缩放.

同时我想支持在执行缩放转换时平移图像,这样就像缩放一样,处于结束状态的图像将被转换到它被平移到的位置.

到目前为止,我已经尝试过Hero过渡pod和我自己编写的自定义viewController过渡.英雄转换的问题是图像没有正确地捕捉到第二个viewController中的结束状态.我对自定义viewController转换的问题是我无法同时进行缩放和平移.

有没有人知道如何在Swift中实现它?非常感谢帮助.

ios uikit-transitions swift

8
推荐指数
1
解决办法
614
查看次数

在UIPercentDrivenInteractiveTransition中慢慢平移会导致故障

在我的应用程序中,我正在使用由平移手势触发的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)

ios uipangesturerecognizer swift

5
推荐指数
1
解决办法
2504
查看次数