我有一个使用Swift + SpriteKit开发的应用程序,它会将SKSpriteNode加载到场景中,并注册一个UIPinchGestureRecognizer手势识别器,在调用简单处理函数来处理这个捏合手势时,代码如下:
func zoom(_ sender: UIPinchGestureRecognizer) {
// Don't let the map get too small or too big:
if map.frame.width >= 1408 && map.frame.width <= 3072 {
map.run(SKAction.scale(by: sender.scale, duration: 0))
}
print(map.frame.width)
}
然而,缩小手势仍会使精灵节点的大小小于指定的限制,然后当我再次尝试取消缩小手势时,处理程序突然识别到我设置的限制,并且不允许取消缩小手势。我已经尝试使用识别器的比例属性来做同样的事情:
func zoom(_ sender: UIPinchGestureRecognizer) {
// Don't let the map get too small or too big:
if sender.scale >= 0.9 && sender.scale <= 2.1 {
map.run(SKAction.scale(by: sender.scale, duration: 0))
}
print(map.frame.width)
}
但更奇怪的是:精灵节点会在收缩时停止变小,但在放开手指后会变得异常庞大。
如何正确地限制捏合手势的范围?