iOS新手:需要帮助了解核心图形图层

时间:2012-06-26 02:02:04

标签: objective-c ios5 core-graphics

iOS的一些新手问题,刚刚开始学习Core Graphics,但我仍然不确定它是如何集成到实际视图中的

所以我有一个创建CGLayer引用的方法,在它上面绘制一些贝塞尔曲线,然后返回CGLayer;这是我程序的一个非常简洁的版本:

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGLayerRef layer = CGLayerCreateWithContext(ctx, CGSizeMake(300.0,300.0), NULL);
CGContextRef layerCtx = CGLayerGetContext(layer);

然后我添加了一些通过解析SVG文件动态生成的bezier填充。

我已经验证了SVG正在被正确解析,我正在使用此代码http://ponderwell.net/2011/05/converting-svg-paths-to-objective-c-paths/来解析路径指令(从路径标记的d参数)到UIBezierPath对象

所以我首先创建填充

CGColorRef color = [UIColor colorWithRed:red green:green blue:blue alpha:1.0].CGColor;
CGContextSetFillColorWithColor(layerCtx, color);

然后添加UIBezierPath

SvgToBezier *bezier = [[SvgToBezier alloc] initFromSVGPathNodeDAttr:pathAttr rect:CGRectMake(0, 0, 300, 300)];

UIBezierPath *bezierPath = bezier.bezier;

CGContextAddPath(layerCtx, bezierPath.CGPath);
CGContextDrawPath(layerCtx, kCGPathFill);

最后我像这样返回CGLayerRef

return layer;

我的问题:现在我有了这个图层参考,我想把它绘制成一个UIView(或者最好绘制的任何类型的对象)

最终目标是让图层显示在UITableViewCell中。

此外,我上面描述的方法存在于我从头创建的类中(它继承自NSObject)。有一种单独的方法,它使用此方法将图层ref分配给类实例的属性。

我将从连接到我的表视图的视图控制器创建此实例。然后希望将图层添加到“cellForRowAtIndexPath”方法中的UITableView单元格。

我希望我包含所有相关信息,非常感谢您的帮助。

干杯

1 个答案:

答案 0 :(得分:1)

简短回答是您要在图层上绘制的视图需要设置为新创建的图层。

[myCurrentViewController.view setLayer:newLayer];

可以在优秀的Quartz2D编程指南中找到长期答案,找到here