关于iOS开发的layer.shadow

Kev*_*vin 1 iphone objective-c ios

如果我像这样使用layer.shadow:

self.layer.shadowOffset = CGSizeMake(0, 1.5);
self.layer.shadowColor = [UIColor grayColor].CGColor;
self.layer.shadowOpacity = 1;
Run Code Online (Sandbox Code Playgroud)

并将一些(不超过10个)这些视图(没有图像)放入a中UIScrollView,这使得scrollView滚动时非常慢.

如果我删除任何关于阴影的代码,滚动会再次变得非常平滑.

仅供参考,在iOS设备上运行应用程序时会出现不平滑的情况,但在iOS模拟器上会顺利进行.

有没有人知道如何保持阴影和平滑滚动?

Tys*_*une 8

如果您设置阴影路径并在图层上设置should rasterize标志,将会有所帮助.

像这样的东西:

UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.bounds];
self.layer.shadowPath = [path CGPath];
self.layer.shouldRasterize = YES;
Run Code Online (Sandbox Code Playgroud)

  • shouldRasterize将图层渲染为位图.这是文档:http://developer.apple.com/library/ios/#DOCUMENTATION/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004500-CH1-SW44 (2认同)