0

我正在创建一个带有标签、表格和图表的 PDF。我绘制图像和文本没有问题,但我有自定义的 PDF 图表UIViews

当前上下文最初是为绘制 PDF 设置的,这里的大多数问题都与此有关。但我说的是,一旦你已经在绘制 PDF,你如何添加一个额外的视图,就像添加一行文本或图像一样。即,我想在UIView我正在创建的 PDF 中添加一个包含饼图的文件。

我尝试将视图转换为图像,但它的分辨率非常低,你可以播种像素化,而如果你直接绘制它,它会使用矢量图形并且变得更加清晰。

PieChartView 来自一个开源的 github 库。管理器是我编写的一个简单的自定义类来管理它。

CGRect frame = CGRectMake(PAGE_WIDTH/2 - pieWidth/2, origin.y, pieWidth, pieHeight);
PieChartView* pie = [[PieChartView alloc] initWithFrame:frame];
PieChartManager* pieManager = [[BPPieChartManager alloc] initWithData:data];
pie.delegate = pieManager;
pie.datasource = pieManager;
[pie.layer drawInContext:UIGraphicsGetCurrentContext()];

这会导致饼图填充 PDF 的整个页面。这并不奇怪,因为它的层不包含有关框架的信息。

我想我应该使用CGContextTranslateCTMCGContextScaleCTM重新定位,但我不确定是否有更简单的方法,而且我不确定如何使用它们来获得我想要的。

谢谢你的帮助

编辑:我试着用这种方式画馅饼:

[pie drawRect: frame];

这会在页面的左上角以预期的大小绘制饼图。我如何将它拿到我想要的地方?框架包含我想要它的原点,那么为什么将它放在左上角?

4

1 回答 1

0

看起来好像在 pdf 中呈现的自定义 UIView 总是从 (0,0) 开始。您可以为 pdf 页面的整个框架添加饼图,并在 UIView 的 drawRect 函数中的自定义较小框架上绘制实际的饼图,并使剩余区域透明。

于 2014-03-12T09:33:19.867 回答