0

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

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

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

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

我已经验证了 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)。有一个单独的方法使用此方法将层引用分配给类实例的属性。

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

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

干杯

4

1 回答 1

1

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

[myCurrentViewController.view setLayer:newLayer];

长答案可以在优秀的 Quartz2D 编程指南中找到,在这里找到。

于 2012-06-26T16:06:29.703 回答