SwiftUI 放大手势()延迟

Posted

技术标签:

【中文标题】SwiftUI 放大手势()延迟【英文标题】:SwiftUI MagnificationGesture() delay 【发布时间】:2021-10-19 16:06:37 【问题描述】:

我有一个带有视图的标准应用程序,您可以通过捏合手势进行缩放。 这是工作,但一开始我有一点延迟,它看起来像跳跃的缩放。有人知道使它工作更顺畅的解决方案吗? 这里的代码示例:

VStack 
Image("image")
    .resizable()
    .scaledToFill()
    .frame(width: UIScreen.main.bounds.width, height: 200)
    .scaleEffect(scale)
    .gesture(MagnificationGesture()
        .updating($scale, body:  (value, scale, trans) in
            scale = value.magnitude
        )
)

【问题讨论】:

【参考方案1】:

为了解决“跳跃缩放”你只需要添加一个动画。

例如可能是这样的:

Image("image")
            .resizable()
            .scaledToFill()
            .frame(width: UIScreen.main.bounds.width, height: 200)
            .scaleEffect(scale)
            .gesture(MagnificationGesture()
                        .updating($scale, body:  (value, scale, trans) in
                    scale = value.magnitude
                )
            )
            .animation(Animation.easeInOut(duration: 2.0), value: scale)// Animation to solve the "jumpy zoom"

【讨论】:

由于特殊性,可行的解决方案是创建 UIKit 手势识别器,但感谢您的回答!

以上是关于SwiftUI 放大手势()延迟的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中点击手势时放大缩小按钮动画?

SwiftUI Map iOS 14 手柄拖动和放大手势

DragGesture 正在取消 SwiftUI 中的 LongPressGesture

SwiftUI:调整 ScrollView 的边界

SwiftUI:ListItem 手势

SwiftUI - navigationBarBackButtonHidden - 向后滑动手势?