2013-05-05 106 views
1

我加入多个UIImageViewUIView执行诸如拖拽,缩放操作和放大images.I放大图像增加了手势识别器的所有UIImageViews。自从我加入多张图像(UIImageViews的)它降低了我的应用程序的性能。是否有任何人有更好的解决方案来执行此操作?谢谢拖拽,缩放和UIView的

+0

我不明白为什么添加多个手势识别器应该会降低性能。根据我的经验,事实并非如此,虽然我很可能是错的。你可以发布一些代码吗?你可以选择摆脱手势识别器并自己处理触摸,但我怀疑你会获得很大的性能提升。 – 2013-05-05 09:03:39

+0

由于我将多个图像视图添加到'UIView',因此性能下降。可以通过将多个UIImageView添加到视图来实现相同的功能@ JavierQuevedo-Fernández – kaar3k 2013-05-05 11:33:03

+0

那么,您可以将图像渲染为单个图层,但我不确定这是否会让你想去。你能否提供更多关于你想要建立的内容的信息,或者目前的方式?否则,这有点困难。 – 2013-05-05 17:24:33

回答

3

许多图片的添加通常不会引起足够的问题,导致您的应用程序速度变慢。例如,为了用一个荒谬的例子来说明这一点,我添加了250(!)个图像视图,每个图像视图都有三个手势,并且它在iPad 3上运行良好,包括将图像动画化为其最终的安放位置/大小/旋转。

两个意见:

  1. 你有什么计算密集型与你的形象的看法?例如:

    • 简单地在Quartz 2D中添加阴影会产生巨大的性能影响,因为它实际上在计算上相当昂贵。即使您使用图层阴影,也不太可能,您可以尝试使用shouldRasterize,这可以缓解问题,但不能解决问题。如果这是问题,还有其他(kludgy)技术可用于计算有效阴影。

    • 另一个令人惊讶的计算密集的过程,如果你的图像(例如)与透明度设置PNG图像,或者如果你已经降低了您的看法alpha/opacity

    • 什么是正在加载的图像的分辨率/大小?如果图像非常大,则图像视图将根据contentMode进行渲染,但如果您要拍摄大图像并缩小它,速度会非常慢。如果可能,您应该使用屏幕分辨率图像。

    这些只是一些看起来如此无害的事情的例子,但其实在计算上相当昂贵。如果你在图像视图上进行Quartz装饰,我会建议暂时将它们放回原处,看看是否有任何变化。

  2. 在自己诊断性能问题而言,我建议看以下两个WWDC视频:

希望这可以让你去。如果你仍然难倒,你应该分享一些关于如何添加/配置视图以及手势如何操作的相关代码。也许你也可以澄清性能问题的本质(例如,它是在初始演绎中,在手势发生时是否是低帧率等)。