我创建了一个宽800像素,高1200像素的CG上下文。我已经在这个已经转换(缩放,翻译和旋转)的上下文中创建了CGLayer。因此,在某些时候,由于CGLayer比上下文更大并且已被翻译,旋转等,因此并非CGLayer的所有部分都属于上下文。见下图:
正如您在图片中看到的那样,图层的某些部分位于上下文区域之外。当我使用
渲染最终构图时CGContextDrawLayerInRect(context, superRect, objectLayer);
它将呈现整个图层,包括上下文之外的那些不必要的部分。
我的问题是:如果我可以在上下文中绘制相关部分,我可以快速渲染并节省内存。
有没有办法做到这一点?
注意:LAYER包含透明度。
请不要提供不涉及CGLayers的解决方案。
提前感谢。
答案 0 :(得分:1)
您可以使用CGContextClip / -ToMask / -ToRect剪辑上下文。
但我认为将像素“转储”到上下文中实际上更便宜/更快,而不是必须计算剪裁边界和“减少”。
剩余绘图不会(通常)耗尽额外的内存。
答案 1 :(得分:0)
你能使用CATiledLayer吗?这应该在广场ala谷歌地图中延迟加载......
+(Class)layerClass
{
return [CATiledLayer class];
}
-(id)init {
CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
tiledLayer.tileSize = CGSize(x,x);
tiledLayer.levelsOfDetail = y;
tiledLayer.levelsOfDetailBias = z;
}