ja 在照片中垂直黑色 View 上的手势。
我想知道它在屏幕级别的位置,因为我想执行一个功能,例如,如果我将 View 向右滑动超过屏幕中心的一半
代码:
@objc func detectPan(recognizer: UIPanGestureRecognizer) {
switch recognizer.state {
case .began:
self.startingConstant = self.centerConstraint.constant
case .changed:
let translation = recognizer.translation(in: self.view)
self.centerConstraint.constant = self.startingConstant - translation.x
default:
break
}
}
最佳答案
您可以在 View 之间转换坐标(点和框架),只要它们位于同一层次结构中即可。您有两种方法 convert(:to:)
和 convert(:from:)
。
在您的情况下,您似乎想要将 View 中的位置转换为屏幕,这是您的关键窗口 UIApplication.shared.keyWindow
。
所以通常屏幕上的点是 let pointOnScreen = myView.convert(pointInMyView, to: UIApplication.shared.keyWindow)
。
所以在你的情况下:
let myView = self.view
let pointInMyView = recognizer.locationInView(myView)
let pointOnScreen = myView.convert(pointInMyView, to: UIApplication.shared.keyWindow)
let isViewGestureOnRightSideOfTheScreen = pointOnScreen.x > UIApplication.shared.keyWindow!.frame.midX
关于ios - Swiftui Pan Gesture 获取 View 的水平位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50985936/