Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 什么';绘制大型CGPath的最有效方法是什么?_Iphone_Cocoa Touch_Quartz Graphics - Fatal编程技术网

Iphone 什么';绘制大型CGPath的最有效方法是什么?

Iphone 什么';绘制大型CGPath的最有效方法是什么?,iphone,cocoa-touch,quartz-graphics,Iphone,Cocoa Touch,Quartz Graphics,好的,我有一个ui视图,它显示了一个相当宽的CGPath。它可以在UIScrollView中水平滚动。现在,我使用的是CATiledLayer,因为它的宽度超过1024像素 所以我的问题是:这有效率吗 - (void) drawRect:(CGRect)rect { CGContextRef g = UIGraphicsGetCurrentContext(); CGContextAddPath(g,path); CGContextSetStrokeColor(g,colo

好的,我有一个
ui视图
,它显示了一个相当宽的
CGPath
。它可以在
UIScrollView
中水平滚动。现在,我使用的是
CATiledLayer
,因为它的宽度超过1024像素

所以我的问题是:这有效率吗

- (void) drawRect:(CGRect)rect {
    CGContextRef g = UIGraphicsGetCurrentContext();
    CGContextAddPath(g,path);
    CGContextSetStrokeColor(g,color);
    CGContextDrawPath(g,kCGPathStroke);
}
本质上,每次绘制层中的平铺时,我都会绘制整个路径。是否有人知道这是一个坏主意,或者CGContext只绘制剪切矩形内的路径部分是否相对聪明

路径的设置方式主要是,我可以将其分解为大小和形状与瓷砖相似的块,但这需要我做更多的工作,路径之间需要一些冗余(对于跨越瓷砖边界的形状),并且还需要一些计算来找到要绘制的路径


向这个方向移动值得吗,或者CGPath已经相对快速地绘制了吗?

石英必须根据其绘制的CGContext的尺寸剪裁它绘制的所有内容。但是,如果您只发送该平铺中可见的几何图形,它仍然可以节省CPU。如果您通过准备多个路径来实现这一点,每个平铺一个路径,那么您所说的是在创建多个路径时进行一次剪裁,而不是每次绘制平铺时都进行剪裁。效率的提高取决于你的路径有多复杂:如果只是几个简单的形状,那没什么大不了的;如果它是一张矢量绘制的国家公路网地图,它可能是巨大的!当然,您必须将这种加速与代码复杂性的增加进行权衡

你能做的就是在你疯狂优化东西之前,用仪器看看在石英上花了多少时间