我有一个滚动视图加载了3个视图控制器。每个视图控制器都使用该代码绘制其图层 - (我们还有更多,但我把它拉出来检查它是否会有帮助)。我仍然有很蹩脚的滑动。 有什么帮助吗?
SHANI
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [Helper cardBackGroundColor:card].CGColor;
sublayer.shadowOffset = CGSizeMake(0, 3);
sublayer.shadowRadius = 5.0;
sublayer.shadowColor = [UIColor blackColor].CGColor;
sublayer.shadowOpacity = 0.8;
sublayer.frame = CGRectInset(self.view.layer.frame, 20, 20);
sublayer.borderColor = [UIColor blackColor].CGColor;
sublayer.borderWidth = 2.0;
sublayer.cornerRadius = 10.0;
[self.view.layer addSublayer:sublayer];
答案 0 :(得分:2)
使用CALayer
绘制内容通常会导致性能下降。我们通常使用可伸缩的图像来获得足够的性能。当你想到它时,手动渲染它而不是使用iPhone有限的处理能力来实时渲染它是有意义的。
您可以从CALayer
获得足够的性能,但是绘制png可能仍然会更快,从而节省电池续航时间。
编辑:所以这是一个解释这个概念的例子。
这段代码实际上取代了速度太慢的CALayer绘图。
UIImageView *shadow = [[UIImageView alloc] initWithFrame:frame];
shadow.image = [[UIImage imageNamed:@"shadow.png"] stretchableImageWithLeftCapWidth:16.0 topCapHeight:16.0];
[contentView addSubview:shadow];
[shadow release];
shadow.png
是34 x 34像素,包含阴影方块。由于可伸缩的图像,可以在不拉伸阴影的情况下调整方块的大小。有关此问题的更多信息,我建议您阅读stretchableImageWithLeftCapWidth:topCapHeight:
的文档。 Google还将帮助您找到有关如何使用可伸缩图像的指南。如果您有更多问题,我将很乐意回答。
答案 1 :(得分:1)
你有一个面具(假设你某处说maskToBounds = YES)和这一层上的阴影。两者都会导致屏幕外渲染过程。
请观看WWDC 2010会议425 - 实践中的核心动画第2部分
你可以在这里找到;