问题
我在我的应用中有一个视图。其中一个例子可能是这样......
目前我只有一个UIView
,其中包含多个UIImageViews
。但是屏幕上同时有多个。
然而,正如我所料(并且知道但希望尽快使其工作),性能是便便。我在iPhone 4S上大约40FPS。
我正在尝试不同的方式来显示视图,以便绘制/动画效果不是那么糟糕。
需要注意的几件事
目前视图是透明的,每个图像都有透明度(图像必须具有透明度才能在其他地方使用)。但是,在不可编辑的版本中,视图始终显示在白色背景上。
有些图片可能需要一段时间才能从互联网上传输。
所有图像都以完全相同的尺寸显示。
我想到的事情
保持原样。
这是最简单的事情,但是当屏幕上有很多视图时,某些设备的性能会非常差。
绘制矩形
我可以将每个图像直接渲染到具有白色背景的视图中。使用CoreGraphics渲染所有内容。但是,我不确定这会不会像我认为的那样有效,因为我会更频繁地调用,我会期待它?
CALayers
这是我认为可能是最好的选择,但我不确定如何最好地做到这一点。如果我可以创建一个CALayer,将图像作为内容布局,然后只显示它。我认为这将是最好的选择,但不确定如何最好地去做。
渲染到UIImage
我可以将整个视图呈现为具有白色背景的单个UIImage,然后将其显示为单个视图。
问题
我自己在这里,并试图从有关该领域知识的人那里获得一些意见,以寻求有关如何最好地开始尝试提高应用程序这部分性能的建议。
由于
答案 0 :(得分:0)
如果您有很多这些并且必须以实时速度渲染它们,您可能需要考虑使用OpenGL-ES。
您可以使用GLKView
自行实施OpenGL-ES,也可以使用Cocos2d-iPhone等现有解决方案。
答案 1 :(得分:0)
如果您只需要图像视图进行显示,那么请使用图层。我建议创建一个单独的UIView子类来管理一组图层,每个图像一个图层。不要尝试自己进行图层渲染,除非你真的需要它来实现功能,因为它不太可能有意义地更快。
如果您为图片视图使用自动布局,这可能会对您的性能问题造成重大影响 - 当您快速滚动并且许多新视图布局时,自动布局会有点慢每帧都有许多新细胞,特别是在旧设备上。如果您看到ISIS *课程在您使用乐器进行配置文件时占用了大量时间,那就是自动布局。
最后,确保您的网络在后台线程上发生,以防止它中断UI并导致口吃。