iOS 捏手势控制堆栈视图间距
iOS pinch gesture to control stack view spacing
我有一个基于日历的应用程序
我希望用户能够通过双指缩放来放大和缩小日历。这是我的代码:
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
的标签,我的代码根据手势的比例更改其间距。
这就是我 运行 时发生的事情。它确实有效,但即使是最小的手势也会调整它的大小,而且非常不自然:
我想知道如何改进我的代码,使它更像是放大 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
}
我有一个基于日历的应用程序
我希望用户能够通过双指缩放来放大和缩小日历。这是我的代码:
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
的标签,我的代码根据手势的比例更改其间距。
这就是我 运行 时发生的事情。它确实有效,但即使是最小的手势也会调整它的大小,而且非常不自然:
我想知道如何改进我的代码,使它更像是放大 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
}