Ios Swift-当具有多个“UIgestureRecognitor”时的性能
我已经想了很长时间了,但我还没有找到一个合适的答案 在swift/iOS开发中,Ios Swift-当具有多个“UIgestureRecognitor”时的性能,ios,swift,performance,uigesturerecognizer,Ios,Swift,Performance,Uigesturerecognizer,我已经想了很长时间了,但我还没有找到一个合适的答案 在swift/iOS开发中,uigestureRecognitor的性能如何 让我举一个理论例子来解释: 你在iPad Pro上有一个应用程序(大屏幕,大空间),在那里你可能有几十个不同的视图和按钮等等。无论出于何种原因,您都需要这些视图和按钮可移动/可单击/可调整大小/ 什么更好 向每个视图添加一个(或多个)UIgestureRecognitor(这会导致许多活动手势识别器和许多小型、特定的处理方法[可能针对每种类型的视图进行分组)) 将一
uigestureRecognitor
的性能如何
让我举一个理论例子来解释:
你在iPad Pro上有一个应用程序(大屏幕,大空间),在那里你可能有几十个不同的视图
和按钮
等等。无论出于何种原因,您都需要这些视图
和按钮
可移动/可单击/可调整大小/
什么更好
- 向每个视图添加一个(或多个)
(这会导致许多活动手势识别器和许多小型、特定的处理方法[可能针对每种类型的UIgestureRecognitor
)视图进行分组)
- 将一个识别器添加到
(这会产生一个活动的手势识别器和一个大的处理方法,需要在superview
子视图中循环,并确定哪个被点击)
UIgestureRecognitors
不是一个好的解决方案
但无论哪种方式,系统都必须循环处理所有内容(在最坏的情况下),无论是多个识别器还是多个子视图。我对此很好奇
谢谢让我们从手势识别流程的角度来看看您的问题->将事件传递到正确的手势识别系统通过视图树查找此手势的最后一个特定图标,该图标将在UIView的特定方法中返回true
-(UIView*)hitTest:(CGPoint)pointwithevent:(UIEvent*)event
- 向每个视图添加一个(或多个)UIgestureRecognitor
- 向superview添加一个识别器
对于多个视图(更多>20个),这种方法只能与一个简单的手势配合使用。例如,如果您实现一些游戏,其中用户拾取并粘贴不同形状的砖块,则可能会发生这种情况。它不适用于常见的UI任务。速度取决于您的实现,基于问题本身,我不建议这样做。这种方法是特定于设计的,与速度无关。>>无论出于何种原因,您都需要这些视图和按钮中的每一个都是可移动/可单击/可调整大小的/。。。你需要它在一瞬间为所有项目或基于某些状态,只有其中的一部分必须是可移动/可点击/可调整大小/?“(…)给你一个理论上的例子(…)”-它不是具体或真实的东西,我没有用它或其他东西制作应用程序。这是理论上最糟糕的情况,在这种情况下,您需要能够移动/单击/调整屏幕上看到的每个视图的大小。不是一刻一刻,而是永远,基本上。在任何给定的时刻,您都应该能够移动/点击/。。。任何你想看的风景。