1

我正在向UIImageViewa 添加多个以UIView执行诸如拖动、捏合和缩放图像之类的操作UIImageViews。我已向所有 .有更好的解决方案来执行此操作吗?谢谢

4

1 回答 1

3

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

两个观察:

  1. 您是否对图像视图进行了计算密集型操作?例如:

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

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

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

    这些只是一些看似无害的事情的例子,但实际上在计算上非常昂贵。如果你在你的图像视图上做任何 Quartz 装饰,我建议你暂时把它们剪掉,看看你是否看到任何变化。

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

    • WWDC 2012 - #211 - 在 iOS 上构建并发用户界面包括一个相当实用的 Instruments 演示,以确定性能问题的根源。这段视频显然专注于一个特定的解决方案(将计算成本高昂的进程移动到后台并实现并发 UI),这可能适用于这种情况,也可能不适用,但我喜欢 Instruments 演示。

    • WWDC 2012 - #235 - iOS App Performance: Responsiveness是关于如何衡量应用程序的响应性和解决问题的技术的更集中的讨论。我发现仪器教程不如之前的视频好,但它确实更详细。

希望这能让你继续前进。如果您仍然感到困惑,您应该分享一些有关如何添加/配置视图以及手势正在做什么的相关代码。也许您还可以澄清性能问题的性质(例如,是否在初始再现中,是否在手势发生时帧速率较低等)。

于 2013-05-05T15:10:08.373 回答