将 ViewController 缩小为圆形过渡 - swift
Posted
技术标签:
【中文标题】将 ViewController 缩小为圆形过渡 - swift【英文标题】:Shrink ViewController to circular shape transition - swift 【发布时间】:2019-06-10 22:02:17 【问题描述】:我正在尝试按照此项目中的示例创建展开/缩小视图控制器转换。在我的例子中,正在呈现的视图控制器将具有与按钮本身相同的背景颜色,因此这个动画本质上只是按钮扩展以覆盖整个屏幕而不会消失。
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()
现在我正在尝试创建动画以关闭视图控制器,这将基本上反转初始动画并将整个屏幕缩小回屏幕底部的圆形按钮。我不确定如何调整上面的代码来扭转这种情况。
【问题讨论】:
【参考方案1】:您可以尝试使用完全相同的块,除了切换fromValue
和toValue
。
expandAnim.fromValue = max(expandScale,26.0)
expandAnim.toValue = 1.0
【讨论】:
以上是关于将 ViewController 缩小为圆形过渡 - swift的主要内容,如果未能解决你的问题,请参考以下文章
在显示之前将 ViewController 加载到 ContainerView 中,因此没有可见的过渡
如何popToRootViewController在navigationController堆栈上有多个viewController,并且只显示一个过渡?