在UIView中拖动,捏合和缩放图像

时间:2013-05-05 06:45:09

标签: ios uiimageview

我正在向UIImageView添加多个UIView以执行拖动,捏合和缩放图像等操作。我已为所有UIImageViews添加了手势识别器。由于我'添加多个图像(UIImageViews)它降低了我的应用程序的性能。任何人都有更好的解决方案来执行此操作吗?感谢

1 个答案:

答案 0 :(得分:3)

通常情况下,添加许多图片不会造成应用程序速度变慢的问题。例如,为了说明一个荒谬的例子,我添加了250个(!)图像视图,每个图像视图有三个手势,它在iPad 3上工作正常,包括将图像动画化为最终静止位置/大小/旋转。

两个观察结果:

  1. 您是否正在使用图像视图执行任何计算密集型操作?例如:

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

    • 另一个令人惊讶的计算密集型过程是,如果您的图片是(例如)具有透明度设置的PNG,或者您缩小了视图的alpha / opacity

      < / LI>
    • 正在加载的图像的分辨率/大小是多少?如果图像非常大,则图像视图将根据contentMode呈现它们,但如果您拍摄大图像并缩小图像,则图像视图可能会非常慢。如果可能,您应该使用屏幕分辨率图像。

    这些只是一些看似无害的事情的例子,但实际上计算成本非常高。如果您在图像视图上进行任何石英装饰,我建议暂时将它们丢回,看看是否有任何变化。

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

    • WWDC 2012 - #211 - Building Concurrent User Interfaces on iOS包括一个相当务实的仪器演示,以确定性能问题的根源。这个视频显然集中在一个特定的解决方案(将计算成本高昂的流程转移到后台并实现并发用户界面),在这种情况下可能适用或不适用,但我喜欢仪器演示。

    • WWDC 2012 - #235 - iOS App Performance: Responsiveness是一个更有针对性的讨论,讨论如何衡量应用和技术中的响应能力来解决问题。我没有发现乐器教程与之前的视频一样好,但它确实更详细。

  3. 希望这可以让你前进。如果您仍然难倒,您应该分享一些关于如何添加/配置视图以及手势正在做什么的相关代码。也许您还可以澄清性能问题的性质(例如,它是在初始演绎中,是在手势发生时帧速率较低等)。