首页 > 解决方案 > 在 viewController transitionAnimation 中动画变换时如何避免剪辑

问题描述

我有一个自定义动画 viewController 转换的问题。

I have a collectionView (fromView) and when a cell is selected, it grows to fullSize (toView).

除了底部单元格之外,它工作得很好,它们在动画到中心时被裁剪。

我试图改变 containerView 的框架以获得额外的空间来避免裁剪,但它弄乱了其中 viewcontrollers 的位置。

这是过渡的相关代码和发现问题的草图。

非常感谢。

实际行为: 预期: 在此处输入图像描述在此处输入图像描述在此处输入图像描述

// originFrame 由 fromView 中的选定单元格定义 var originFrame = CGRect.zero

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {


        guard let toView = transitionContext.view(forKey: .to),
                    let fromView = transitionContext.view(forKey: .from)
                    else { return }

        let finalFrame = toView.frame
        let growFactor = finalFrame.width / originFrame.width

        let centerDiffX = fromView.center.x-originFrame.midX
        let centerDiffY = fromView.center.y-originFrame.midY


        // Animate the transition.
        UIView.animate(
            withDuration: duration,
            delay:0.0,
            animations: {

                let scaleTransform = CGAffineTransform(scaleX: growFactor, y: growFactor)
                fromView.transform = CGAffineTransform(translationX: deltaX, y: deltaY).concatenating(scaleTransform)

                ...

标签: iosanimationswift3uicollectionviewcell

解决方案


制作collectionview的快照就可以了;)


推荐阅读