【问题标题】:UIImageView - Why does adding a shadow slow it down? [duplicate]UIImageView - 为什么添加阴影会减慢速度? [复制]
【发布时间】:2013-01-08 18:50:00
【问题描述】:

可能重复:
Drawing shadow with Quartz is slow on iPhone & iPad. Another way?

我创建了以下帮助方法来为我的 UIImageViews 添加阴影。它看起来不错,但我注意到它显着减慢了图形渲染速度,并且在旋转设备时看起来特别糟糕。我也偶尔收到Received memory warning.

- (void)addShadowToImageView:(UIImageView *)imageView;
{
  imageView.layer.shadowColor = [UIColor lightGrayColor].CGColor;
  imageView.layer.shadowOffset = CGSizeMake(0, 1);
  imageView.layer.shadowOpacity = 1;
  imageView.layer.shadowRadius = 1.0;
  imageView.clipsToBounds = NO;
}

如何优化这种效果以提高性能?

【问题讨论】:

  • 这是在较新的设备上吗?我知道旧设备在使用 CALayer 时确实很慢,但我没有看到新设备(iphone 4 及更高版本)的速度明显变慢
  • 你多久调用一次这个方法?
  • 您为什么不尝试构建您的项目进行性能分析,然后使用时间分析器查看一次使用最多 CPU 的部分?
  • 在第四代 iPad 上测试。在 viewDidLoad 中调用 2-6 次。

标签: objective-c ios uiimageview


【解决方案1】:

我会看看这篇文章:

Drawing shadow with Quartz is slow on iPhone & iPad. Another way?

它的要点是您应该使用 CALayer 的 shadowPath 属性,因为这是 CoreGraphics 能够优化阴影的方式。事实上,如果你检查这个属性的文档,你会看到这个位

指定显式路径通常会提高渲染性能。

作为一般规则,直接操作 UIView 的图层(处理阴影或角半径等操作)往往会显着降低性能。

【讨论】:

  • 谢谢。是的,我不知道阴影渲染得这么慢。今后我会牢记这一点。
猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多