Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:石英优化绘图_Iphone_Iphone Sdk 3.0_Quartz Graphics - Fatal编程技术网

iPhone:石英优化绘图

iPhone:石英优化绘图,iphone,iphone-sdk-3.0,quartz-graphics,Iphone,Iphone Sdk 3.0,Quartz Graphics,我已经创建了一个CG上下文,宽800像素,高1200像素。我已经在已经转换(缩放、平移和旋转)的上下文上创建了CGLayer。因此,在某一点上,由于CGLayer比上下文更大,并且已经被翻译、旋转等,因此并非该CGLayer的所有部分都在上下文中。见下图: 如图所示,该层的某些部分位于上下文区域之外。当我使用 CGContextDrawLayerInRect(context, superRect, objectLayer); 它将渲染整个层,包括上下文之外不必要的部分 我的问题是:如果我能让

我已经创建了一个CG上下文,宽800像素,高1200像素。我已经在已经转换(缩放、平移和旋转)的上下文上创建了CGLayer。因此,在某一点上,由于CGLayer比上下文更大,并且已经被翻译、旋转等,因此并非该CGLayer的所有部分都在上下文中。见下图:

如图所示,该层的某些部分位于上下文区域之外。当我使用

CGContextDrawLayerInRect(context, superRect, objectLayer);
它将渲染整个层,包括上下文之外不必要的部分

我的问题是:如果我能让它只画上下文中的相关部分,我就能让它快速渲染并节省内存

有办法吗

注意:图层包含透明度。

请不要给出不涉及CGlayer的解决方案


提前谢谢。

您能使用CATILDELAYER吗?这应该是谷歌地图中的延迟加载

+(Class)layerClass
{
return [CATiledLayer class];
}


-(id)init {
   CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
   tiledLayer.tileSize = CGSize(x,x);
   tiledLayer.levelsOfDetail = y;
   tiledLayer.levelsOfDetailBias = z;
}

你能使用CATiledLayer吗?这应该是谷歌地图中的延迟加载

+(Class)layerClass
{
return [CATiledLayer class];
}


-(id)init {
   CATiledLayer *tiledLayer = (CATiledLayer *) self.layer;
   tiledLayer.tileSize = CGSize(x,x);
   tiledLayer.levelsOfDetail = y;
   tiledLayer.levelsOfDetailBias = z;
}

您可以使用CGContextClip/-ToMask/-ToRect剪裁上下文

但我认为,简单地将像素“转储”到上下文中实际上比计算剪裁边界和“少画”更便宜/更快


多余的图形(通常)不会占用额外的内存。

您可以使用CGContextClip/-ToMask/-ToRect剪裁上下文

但我认为,简单地将像素“转储”到上下文中实际上比计算剪裁边界和“少画”更便宜/更快


多余的图形(通常)不会占用额外的内存。

否,不幸的是,我必须使用CGLayer。其中一个原因是我必须在屏幕外写作。但无论如何,我找不到一个简单的代码来解释CATiledLayer是如何工作的。这似乎是苹果公司记录的那些晦涩难懂的函数之一。@Mike:它既不是晦涩难懂的函数,也不是一个函数,它是CALayer子类。我发现这个例子在过去很有用,它使用PDF函数绘制,但在其他方面很好地说明了平铺层。不,不幸的是我必须使用CGLayer。其中一个原因是我必须在屏幕外写作。但无论如何,我找不到一个简单的代码来解释CATiledLayer是如何工作的。这似乎是苹果公司记录的那些晦涩难懂的函数之一。@Mike:它既不是晦涩难懂的函数,也不是一个函数,它是CALayer子类。我发现这个例子在过去很有用,它使用PDF函数绘制,但在其他方面很好地说明了平铺层。