微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS 捏合手势控制堆栈视图间距

如何解决iOS 捏合手势控制堆栈视图间距

我有一个基于日历的应用

app

我希望用户能够通过捏来放大和缩小日历。这是我的代码

let p = UIPinchGestureRecognizer(target: self,action: #selector(pinch))
view.addGestureRecognizer(p)

@objc func pinch(gestureRecognizer gesture: UIPinchGestureRecognizer) {
    print("----------")
    print("Spacing: \(timeStack.spacing)")
    print("Gesture: \(gesture.scale)")
    var spacing = timeStack.spacing * gesture.scale
    if spacing > 70 {
        spacing = 70
    } else if spacing < 10 {
        spacing = 10
    }
    timeStack.spacing = spacing
}

我有一个 UIStackView,其中包含名为 timeStack标签,我的代码正在根据手势的比例更改其间距。

这就是我运行它时发生的情况。它确实有效,但即使是最小的手势也会调整它的大小,而且非常不自然:

gif

我想知道如何改进我的代码,使其更像是在 iOS 日历应用程序中进行缩放。 谢谢。

解决方法

每次重置比例:

@objc func pinch(gestureRecognizer gesture: UIPinchGestureRecognizer) {
    print("----------")
    print("Spacing: \(timeStack.spacing)")
    print("Gesture: \(gesture.scale)")
    var spacing = timeStack.spacing * gesture.scale
    if spacing > 70 {
        spacing = 70
    } else if spacing < 10 {
        spacing = 10
    }
    timeStack.spacing = spacing
    // reset gesture scale to prevent cumulative effect
    gesture.scale = 1.0
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。