如何转换单个UIView,以便您可以在现有PDF中绘制它?

时间:2013-10-31 02:24:15

标签: ios objective-c pdf uiview cgcontext

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

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

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

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];

在页面的左上角绘制饼图,其大小与预期的大小相同。我如何在我想要的地方得到它?框架包含我想要它的原点,为什么它把它放在左上角?

1 个答案:

答案 0 :(得分:0)

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