我需要能够与其中包含许多不同部分的cilinder的表示形式进行交互。当用户点击这些小矩形时,我需要显示一个与特定块(窗体)相关的弹出框。
下一张图片演示了逼真的3D方法。但是,我重复一遍,我需要解决这个问题, 3d不是必需的(虽然确实很酷)。满足功能需求的表示就足够了。
有关用于制作工程图的零件的信息来自API(尺寸,位置等)
我真的不需要现实。最简单的近似方法是以2d表示形式显示一个cilinder,就像一个由可交互的小矩形组成的矩形一样。
因此,正如我提到的,我认为有两种相反的方法:现实的或简化的
有没有办法在中间实现一个不错的解决方案?我应该研究哪些库,组件,框架?
我的研究使我进入了SceneKit,但我仍然不知道是否能够与它进行交互。 交互是的一个非常重要的部分,因为当用户点击圆柱体上的任何小矩形时,我需要显示一个弹出框。
谢谢
最佳答案
您不需要任何特殊的框架即可实现这样的交互。可以使用标准UIKit
和UIView
以及一些三角函数来实现此效果。实际上,您可以使用2D数学和绘图精确地绘制示例图像。我的答案不是确切的公式,而是要考虑如何定义形状并将问题分解为可管理的步骤。
圆柱体可以通过两个表示端件的偏移圆来定义,这些偏移圆的半径相连。我将使用正射投影,这意味着圆柱体不会随着深度延伸到背景而显得更小(但如果需要,您可以适应透视)。您可以使用CoreGraphics在UIView drawRect
中进行绘制。
正方形切片表示圆的一个角片,其偏移量小于圆柱体的长度,但方向相同,如下图所示(抱歉,绘制不准确)。
您感兴趣的这个正方形切片是实心红色轮廓的区域,该区域在第一个圆的半径之外,在第二个假想的圆的半径之内(第二个圆与第一个圆的偏移量为您想要的任何长度)。
要绘制此区域,您只需要绘制每个弧的轮廓的路径并连接端点即可。
要检查触摸是否在这些正方形切片之一内:
a
的原点与角度a
之间。 要找到一个显示弹出框的点,可以对切片上的端点求平均,或者找到两个边缘之间的中间角度并偏移一半的距离。
关于ios - 与iOS中的复杂人物互动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32848726/