使用 iPad 罗盘在 Swift 中平移 image/images

Panning an image/images in Swift using an iPad compass

我有四张图片;每个都是 350 像素宽;第一个是北,第二个是东,第三个是南,第四个是西。我将它们放入单个图像的 scrollView 中,然后我 link 将 scrollView 指向我指向 iPad 的方向。现在,当我四处平移时,我想让滚动条在图像周围平移,所以如果我向北看并向东转,我会看到屏幕向北滑动,然后向东滑动到它上面。

现在我尝试使用指南针来做到这一点,并且效果相当不错,但是如何编码跨越 0 度和 360 度之间的边界是一个挑战。我尝试使用偏航,这样我就能看到两个 180 度的圆,但我也没有想出如何让它工作。我 google 这个并找到四元数和欧拉角,但对我来说没有任何意义......

需要一些 direction/help。

您实际上不需要滚动视图,因为您是通过设备标题控制滚动偏移,而不是让用户滑动屏幕。因此,您可以只使用普通的旧 UIView 作为图像视图的 parent。您只需将 view.bounds.origin 而不是 scrollView.contentOffset 更新为“滚动”。 (在幕后,滚动视图的 contentOffset 与其 bounds.origin 相同。)

无论如何,像这样布置你的图片:

+-------+-------+-------+-------+-------+
| North |  East | South |  West | North |
+-------+-------+-------+-------+-------+

请注意,北方图像使用了两次。

当您获得新标题时,像这样更新滚动视图的偏移量:

let range = CGFloat(350 * 4)
let offset = range * (CGFloat)direction / 360
scrollView.contentOffset = CGPointMake(offset, 0)