我需要能够与其中包含许多不同部分的cilinder的表示形式进行交互。当用户点击这些小矩形时,我需要显示一个与特定块(窗体)相关的弹出框。

下一张图片演示了逼真的3D方法。但是,我重复一遍,我需要解决这个问题, 3d不是必需的(虽然确实很酷)。满足功能需求的表示就足够了。

有关用于制作工程图的零件的信息来自API(尺寸,位置等)

ios - 与iOS中的复杂人物互动-LMLPHP

我真的不需要现实。最简单的近似方法是以2d表示形式显示一个cilinder,就像一个由可交互的小矩形组成的矩形一样。

因此,正如我提到的,我认为有两种相反的方法:现实的或简化的

有没有办法在中间实现一个不错的解决方案?我应该研究哪些库,组件,框架?

我的研究使我进入了SceneKit,但我仍然不知道是否能够与它进行交互。 交互是的一个非常重要的部分,因为当用户点击圆柱体上的任何小矩形时,我需要显示一个弹出框。

谢谢

最佳答案

您不需要任何特殊的框架即可实现这样的交互。可以使用标准UIKitUIView以及一些三角函数来实现此效果。实际上,您可以使用2D数学和绘图精确地绘制示例图像。我的答案不是确切的公式,而是要考虑如何定义形状并将问题分解为可管理的步骤。

圆柱体可以通过两个表示端件的偏移圆来定义,这些偏移圆的半径相连。我将使用正射投影,这意味着圆柱体不会随着深度延伸到背景而显得更小(但如果需要,您可以适应透视)。您可以使用CoreGraphics在UIView drawRect中进行绘制。

正方形切片表示圆的一个角片,其偏移量小于圆柱体的长度,但方向相同,如下图所示(抱歉,绘制不准确)。

ios - 与iOS中的复杂人物互动-LMLPHP

您感兴趣的这个正方形切片是实心红色轮廓的区域,该区域在第一个圆的半径之外,在第二个假想的圆的半径之内(第二个圆与第一个圆的偏移量为您想要的任何长度)。

要绘制此区域,您只需要绘制每个弧的轮廓的路径并连接端点即可。

要检查触摸是否在这些正方形切片之一内:

  • 检查触摸点是否在a的原点与角度a之间。
  • 检查接触点是否在内部圆的半径之外。
  • 检查接触点是否在外圆的半径内。 (请注意,如果圆之间的距离大于半径,这意味着什么。)

  • 要找到一个显示弹出框的点,可以对切片上的端点求平均,或者找到两个边缘之间的中间角度并偏移一半的距离。

    关于ios - 与iOS中的复杂人物互动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32848726/

    10-10 16:05