我在使用阴影效果方面表现不佳

Mon*_*erK 10 iphone performance shadow

我在滚动视图上放了一些图像视图.当我拖动这个滚动视图时,我没有任何问题.

但是在我将阴影效果应用于这些图像视图后,拖动此滚动视图会导致性能下降.

我使用了shadowOpacity,shadowRadius和shadowOffset方法.

例如:

[ [ anImageView layer ] shadowOpacity: 1.0 ];
Run Code Online (Sandbox Code Playgroud)

如果使用阴影效果会严重影响性能,我会直接绘制图像的阴影.

如果有关于此问题的一些提示,请告诉我们.

我想以编程方式在iOS上使用阴影效果,因为我的绘图技巧最差.

谢谢你的阅读.

tc.*_*tc. 25

请参阅CALayer.shouldRasterize(iOS 3.2+,但shadowOffset/etc也是如此):

当此属性的值为YES时,图层将在其本地坐标空间中呈现为位图,然后使用任何其他内容合成到目标.滤镜属性中的阴影效果和任何滤镜都被栅格化并包含在位图中.

您可能还需要适当地设置rasterizationScale.

  • 此外,创建阴影路径也可以提高性能. (5认同)

Zde*_*nek 8

虽然使用reasterized层确实提高了性能,但使用shadowpath proerty会得到更好(更好)的结果,如@ wayne-hartman建议的那样.

查看http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths,了解如何使用CALayer阴影路径.


bar*_*nes 7

无论何时使用阴影,最好使用bezier路径作为背景.这将帮助您设置shadowPath,这将大大提高性能.Rasterize将提高性能,但setShadowPath将比仅设置rasterize提高5倍.

path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 100, 100) cornerRadius:10];
[self.layer setShadowColor:[UIColor blackColor].CGColor];
[self.layer setShadowOpacity:1.0f];
[self.layer setShadowRadius:10.0f];
[self.layer setShadowPath:[path CGPath]];
Run Code Online (Sandbox Code Playgroud)