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单元格。
我希望我包含所有相关信息,非常感谢您的帮助。
干杯
答案 0 :(得分:1)
简短回答是您要在图层上绘制的视图需要设置为新创建的图层。
[myCurrentViewController.view setLayer:newLayer];
可以在优秀的Quartz2D编程指南中找到长期答案,找到here。