iphone - 在 iOS 上做阴影的最快方法是什么?

标签 iphone objective-c ios core-animation shadow

QuartzCore .layer.shadow 的性能提升。每次发生变化时,它们似乎都需要重新渲染,从而导致一切滞后。

Coregraphics 渐变(用于 1 路阴影) - 看起来不正确。如果您的渐变从 0.3 alpha 变为 0,它会产生一些奇怪的效果,您可以“看到”它停止。就是不好看,也不自然。也许它没有抖动,但我确信我听说核心图形渐变是。很奇怪,我不知道。

Coregraphics 阴影 - 设置它们时需要一段时间来渲染,但除此之外性能非常好。就在您等待 View 出现的那一刻,因为它必须首先渲染它的阴影,这就是问题所在。

所以我一定错过了什么。是否有另一种看起来正确且渲染时间和性能都很快的方法?

最佳答案

添加 shadowPath 应该会给您带来巨大的性能提升。以下示例假设您只想要 View 两侧的阴影

CGPathRef path = [UIBezierPath bezierPathWithRect:view.bounds].CGPath;
[view.layer setShadowPath:path];

编辑: 默认情况下,CALayer 在动画期间绘制阴影,以下代码允许您将阴影缓存为位图并重复使用它而不是重新绘制它:

self.view.layer.shouldRasterize = YES;
// Don't forget the rasterization scale
// I spent days trying to figure out why retina display assets weren't working as expected
self.view.layer.rasterizationScale = [UIScreen mainScreen].scale;

关于iphone - 在 iOS 上做阴影的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133109/

相关文章:

iphone - 随着音乐节拍闪烁的手电筒

objective-c - 如何在有条件的屏幕之间移动(如果...)

ios - 在 cellForRowAtIndexPath 为不同的行高设置行高

objective-c - 我可以使用 NSKeyedArchiver 保存 NSMutableDictionary 数组吗

c++ - 如何从 Windows 将闭路电视摄像头传输到 iPhone

iphone - 如何在 Facebook 上发布带有 url 的消息?

ios - JSON 文件从服务器下载,文件加载了 8 次?

iphone - 如何将相同的 UIButton 添加到 iphone 中所有 View Controller 的导航栏?

ios - 两个本地通知未触发

ios - 如何在ios中的成功 block 中返回数组