1

我正在尝试按照此项目中的示例创建扩展/收缩视图控制器转换。在我的例子中,正在呈现的视图控制器将具有与按钮本身相同的背景颜色,因此这个动画本质上只是按钮扩展以覆盖整个屏幕而不会消失。

在此处输入图像描述

https://github.com/AladinWay/TransitionButton

我已将我的按钮放在屏幕的右下角,并设法使用以下功能使其展开:

private func expand(completion:(()->Void)?, revertDelay: TimeInterval) {

    let expandAnim = CABasicAnimation(keyPath: "transform.scale")
    let expandScale = (UIScreen.main.bounds.size.height/self.frame.size.height)*2
    expandAnim.fromValue            = 1.0
    expandAnim.toValue              = max(expandScale,26.0)
    expandAnim.timingFunction       = expandCurve
    expandAnim.duration             = 0.3
    expandAnim.fillMode             = .forwards
    expandAnim.isRemovedOnCompletion  = false

    CATransaction.setCompletionBlock {
        completion?()
        // We return to original state after a delay to give opportunity to custom transition
        DispatchQueue.main.asyncAfter(deadline: .now() + revertDelay) {
            self.setOriginalState(completion: nil)
            self.layer.removeAllAnimations() // make sure we remove all animation
        }
    }

    layer.add(expandAnim, forKey: expandAnim.keyPath)

    CATransaction.commit()
}

现在我正在尝试创建动画以关闭视图控制器,这将基本上反转初始动画并将整个屏幕缩小回屏幕底部的圆形按钮。我不确定如何调整上面的代码来扭转这种情况。

4

1 回答 1

0

您可以尝试使用完全相同的块,除了切换fromValueand toValue

expandAnim.fromValue            = max(expandScale,26.0)
expandAnim.toValue              = 1.0
于 2019-06-11T00:29:12.953 回答