我有两个大的UIImageViews在我的iPad应用程序中显示图像(每个都几乎与屏幕大小相同,它们具有特殊效果,如旋转,阴影等,看起来像新闻堆栈) 。显示这些图像后,应用程序将非常缓慢运行。 UIAlertViews看起来就像他们只有两帧时出现,而且动画甚至都没有滞后......它们更糟糕!但是当我没有呈现UIImageViews时,一切都能快速而优雅地运行。显然我正在做错事,因为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属性设置为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;
答案 0 :(得分:3)
我们只能在没有看到实际代码的情况下猜测。
shadowRadius
会更快吗? shadowPath
属性可以带来巨大的改进,如果您可以使用它来获得您正在寻找的效果。答案 1 :(得分:2)
如果使用CALayer
阴影,这可能是任何类型动画的主要性能问题。它们会触发软件渲染器,这会严重损害动画效果。如果您有矩形阴影,最好在Photoshop中绘制阴影,并将其用作单独视图/图层中的可伸缩图像。如果您的视图具有不规则的形状,您可以使用Core Graphics绘制它们,并且在动画发生时仍然会更快 。
答案 2 :(得分:2)
最佳解决方案是将阴影渲染为图像。但是,如果您手动设置shadowRadius
,我预计使用CALayer shadowPath
的效果会大大提高。
否则,必须由系统每帧计算。自己设置会让动画表现变得荒谬。