双击主页button时,延迟CALayer

当我用CALayer等影子等我的应用程序是滞后的,当我双击主页button看到任务运行。 我没有任何其他的滞后,只是当我双击。

我把这个方法调用20次放20个图像:

- (UIView *)createImage:(CGFloat)posX posY:(CGFloat)posY imgName:(NSString *)imgName { UIView *myView = [[UIView alloc] init]; CALayer *sublayer = [CALayer layer]; sublayer.backgroundColor = [UIColor blueColor].CGColor; sublayer.shadowOffset = CGSizeMake(0, 3); sublayer.shadowRadius = 5.0; sublayer.shadowColor = [UIColor blackColor].CGColor; sublayer.shadowOpacity = 0.8; sublayer.frame = CGRectMake(posX, posY, 65, 65); sublayer.borderColor = [UIColor blackColor].CGColor; sublayer.borderWidth = 2.0; sublayer.cornerRadius = 10.0; CALayer *imageLayer = [CALayer layer]; imageLayer.frame = sublayer.bounds; imageLayer.cornerRadius = 10.0; imageLayer.contents = (id) [UIImage imageNamed:imgName].CGImage; imageLayer.masksToBounds = YES; [sublayer addSublayer:imageLayer]; [myView.layer addSublayer:sublayer]; return myView; } 

除了这个之外,我已经评论了所有的代码,所以我确定滞后来自这里。 我也检查了分配工具,我的应用程序从未超过1Mo。 当我只是把图像没有阴影等一切工作正常。

尝试在shadowPath上设置shadowPath 。 因为你的图层上有圆angular,所以需要圆angular矩形。

CALayer必须计算它正在绘制的位置,以及放置阴影的位置(如果没有阴影path)。 这对animationperformance有很大的影响。

另一种提高CALayers性能的方法是将shouldRasterize属性设置为YES。 这将图层内容存储为位图,并防止重新渲染所有内容。