由于UIImageViews,应用程序运行缓慢

我有三个大的UIImageViews在我的iPad应用程序中显示图像(每个几乎是屏幕的大小,他们有特殊的效果,如旋转, 阴影等看起来像一个新闻栈)。 当这些图像显示,应用程序运行非常缓慢 。 UIAlertViews字面上看起来像是只有两个框架,当他们被提出和animation甚至没有滞后…他们更糟! 但是,当我不提供UIImageViews,一切工作迅速,优雅。 显然,我做了一些不正确的事情,因为iOS可以处理三张图片。 任何build议如何使应用程序运行更快? 谢谢。

PS我甚至不想知道当我将新iPad的图像分辨率加倍时会发生什么

编辑 :这是我用来设置阴影的代码。 这利用了QuartzCore框架。

page2.layer.shadowColor = [UIColor blackColor].CGColor; page2.layer.shadowOpacity = 1.0; page2.layer.shadowRadius = 10.0; page2.layer.shadowOffset = CGSizeMake(0, 4); 

编辑2(答案) :看来,滞后发生是因为我设置阴影的方式。 如果将shadowPath属性设置为UIImageViews边界的UIBezierPath,则渲染发生得更加快速,平滑,应用程序的速度显着提高。 这是我最后的代码:

 page2.layer.shadowColor = [UIColor blackColor].CGColor; page2.layer.shadowOpacity = 1.0; page2.layer.shadowRadius = 10.0; page2.layer.shadowOffset = CGSizeMake(0, 4); page2.layer.masksToBounds = NO; UIBezierPath *path2 = [UIBezierPath bezierPathWithRect:page2.bounds]; page2.layer.shadowPath = path2.CGPath; 

我们只能猜测没有看到实际的代码。

  • 阴影可能是非常昂贵的。 如果closures它,它会变快吗?或者减lessshadowRadius
  • 设置shadowPath属性可以导致巨大的改进,如果你可以使用它来获得你正在寻找的效果。
  • 否则:将阴影烘焙到图像中,或者使用其他技术来伪造图像边缘的阴影。

如果您使用CALayer阴影,这可能是任何types的animation主要性能问题。 他们触发软件渲染器,真的很伤害animation。 如果您有矩形阴影,最好在Photoshop中绘制阴影,并将其用作单独视图/图层中的可拉伸图像。 如果你的视图有不规则的形状,你可以使用核心graphics来绘制它们,当animation发生的时候,它仍然会更快。

最好的解决办法是将阴影渲染为图像。 不过,如果您手动设置shadowPath ,则预计使用CALayer shadowRadius性能将大大提高。

否则,它必须由系统来计算,每一帧。 自己设置会大大提高animation性能。