gpt4 book ai didi

ios - Swift - 有很多时 `UIGestureRecognizer` 的性能

转载 作者:行者123 更新时间:2023-11-28 06:17:41 24 4
gpt4 key购买 nike

我已经考虑了很长一段时间了,但我还没有找到合适的答案。

UIGestureRecognizer 在 swift/iOS 开发中的性能如何?

让我通过给你一个理论上的例子来解释:你在 iPad Pro(大屏幕,大空间)上有一个应用程序,那里可能有几十个不同的 viewsbuttons 等等。无论出于何种原因,您都需要这些 viewsbuttons 中的每一个都是可移动/可点击/可调整大小/...

什么更好?

  • 向每个 View 添加一个(或多个)UIGestureRecognizer(s)(这会导致许多事件的手势识别器和许多小的、特定的处理方法[可能针对每个 View 进行分组 View 类型])
  • superview 添加一个识别器(这会导致一个事件的手势识别器和一个需要循环访问 subviews 并确定哪个被点击了)

我想第一个是最简单的但是它比第二个慢吗?对此我不确定。我的胃告诉我,拥有那么多 UIGestureRecognizers 并不是一个好的解决方案。

但无论哪种方式,系统都必须循环遍历所有内容(在最坏的情况下),无论是许多识别器还是许多 subview 。我对此很好奇。

谢谢

最佳答案

让我们从手势识别流程的角度来看您的问题 -> 将事件传递给正确的手势识别系统通过 View 树找到特定于该手势的最后一个,它将在 UIView 的一个特定方法中返回 true - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

  • 向每个 View 添加一个(或多个)UIGestureRecognizer

我推荐使用这种方式。在这种情况下,系统将为您完成大部分工作,并防止您犯下以后很难调试的错误——相信我。这是针对用户界面的。特别是如果您在屏幕的不同部分有多个不同的手势。在我的特殊情况下,我有一个巨大的视频播放器用户界面,在一个屏幕上有大约 20 个手势识别器,感觉非常好——用户界面没有滞后或帧丢失。这种方式简单且 self 描述。我建议使用 Storyboard或 xib 来实现它。您可以引用 Interface Builder 和稍后的任何时间来记忆一下您应该更新什么识别器来改变 UI 的行为。这种方法的速度由系统保证。

  • 向父 View 添加一个识别器

这种方式可以只用一个简单的手势来实现多个 View (更多 > 20)。例如,如果您实现一些用户拿起并粘贴不同形状的积木的游戏,就会发生这种情况。它不适合常见的 UI 任务。速度取决于您的实现,并且根据问题本身,我不建议您这样做。这种方法是特定于设计的,与速度无关。

关于ios - Swift - 有很多时 `UIGestureRecognizer` 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44695883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com