Iphone 由于UIImageView,应用程序运行缓慢

Iphone 由于UIImageView,应用程序运行缓慢,iphone,objective-c,ios,ipad,uiimageview,Iphone,Objective C,Ios,Ipad,Uiimageview,我有三个大的UIImageView,在我的iPad应用程序中显示图像(每个都几乎和屏幕一样大,它们有特殊效果,如旋转、阴影等,看起来像新闻堆栈)。显示这些图像时,应用程序运行速度非常慢。UIAlertView在显示时看起来就像只有两个帧,动画甚至都不滞后。。。他们更糟!但当我不展示UIImageView时,一切都会快速而优雅地运行。显然我做得不对,因为iOS肯定能处理三张图片。关于如何让应用程序运行得更快,有什么建议吗?谢谢 PS我甚至不想知道当我把新iPad的图像分辨率提高一倍时会发生什么,哈

我有三个大的UIImageView,在我的iPad应用程序中显示图像(每个都几乎和屏幕一样大,它们有特殊效果,如旋转、阴影等,看起来像新闻堆栈)。显示这些图像时,应用程序运行速度非常慢。UIAlertView在显示时看起来就像只有两个帧,动画甚至都不滞后。。。他们更糟!但当我不展示UIImageView时,一切都会快速而优雅地运行。显然我做得不对,因为iOS肯定能处理三张图片。关于如何让应用程序运行得更快,有什么建议吗?谢谢

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属性设置为UIImageView边界的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;

如果使用
CALayer
shadows,这可能是任何类型动画的主要性能问题。它们会触发软件渲染器,这会严重影响动画效果。如果您有矩形阴影,最好在Photoshop中绘制阴影,并将其用作单独视图/层中的可拉伸图像。如果您的视图有不规则的形状,您可以使用核心图形来绘制它们,而且当动画发生时,绘制速度会快得多。

我们只能猜测,而看不到实际的代码

  • 阴影可能非常昂贵。如果关闭它们,或减小阴影半径,是否会加快速度
  • 设置
    shadowPath
    属性可以带来巨大的改进,如果您可以使用它来获得想要的效果
  • 否则:将阴影烘焙到图像中,或使用其他技术在图像边缘周围伪造阴影

    • 最佳解决方案是将阴影渲染为图像。但是,如果手动设置
      阴影路径,我希望使用CALayer
      阴影半径
      的性能将大大提高


      否则,它必须由系统每帧计算。您自己设置它将可笑地提高动画性能。

      您的图像来自url??否,它们保存在文档目录中。您首先保存在文档目录中??是的,在显示视图之前,所有内容都保存在文档目录中并可用。视图显示后,UIImageViews被加载,问题开始出现。当您将图像存储在文档目录中时,请将其压缩并存储在文档目录中。。r u在TabeView中显示图像???另外,是的,关闭阴影后,一切都会加快。请尝试设置
      阴影路径
      。这可能足够帮助你了。10点阴影半径仍然相当大。设置阴影属性也有很大帮助。