用于控制堆栈视图间距的iOS收缩手势

用于控制堆栈视图间距的iOS收缩手势,ios,swift,uikit,uigesturerecognizer,uistackview,Ios,Swift,Uikit,Uigesturerecognizer,Uistackview,我有一个基于日历的应用程序 我希望用户能够收缩以放大和缩小日历。这是我的代码: let p = UIPinchGestureRecognizer(target: self, action: #selector(pinch)) view.addGestureRecognizer(p) @objc func pinch(gestureRecognizer gesture: UIPinchGestureRecognizer) { print("----------")

我有一个基于日历的应用程序

我希望用户能够收缩以放大和缩小日历。这是我的代码:

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
}
let p=UIPinchGestureRecognitor(目标:自我,操作:#选择器(pinch))
view.AddGestureRecognitor(p)
@objc func按压(手势识别器手势:UIPinchGestureRecognitor){
打印(------------)
打印(“间距:\(timeStack.spating)”)
打印(“手势:\(手势.缩放)”)
变量间距=timeStack.spating*手势.scale
如果间距>70{
间距=70
}否则,如果间距小于10{
间距=10
}
timeStack.spacing=间距
}
我有一个
UIStackView
,其中包含名为
timeStack
的标签,我的代码根据手势的比例改变其间距

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

我想知道如何改进我的代码,使之更像是在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
}
@objc func pinch(手势识别器手势:uipinchgesturecognitioner){
打印(------------)
打印(“间距:\(timeStack.spating)”)
打印(“手势:\(手势.缩放)”)
变量间距=timeStack.spating*手势.scale
如果间距>70{
间距=70
}否则,如果间距小于10{
间距=10
}
timeStack.spacing=间距
//重置手势比例以防止累积效果
手势。比例=1.0
}

必须保持手势开头的间距,因为刻度仅对该值有效。新间距是手势开始处的间距x新刻度ad:sirpose.scale=1.0,设置时间堆栈的新值后。间距git应为
=
,而不是
=
!谢谢,我改正了