【问题标题】:How do you convert a single UIView so that you can draw it within an existing PDF?如何转换单个 UIView 以便可以在现有 PDF 中绘制它?
【发布时间】:2013-11-10 22:04:11
【问题描述】:

我正在创建一个带有标签、表格和图表的 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 的整个页面。这并不奇怪,因为它的层不包含有关框架的信息。

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

感谢您的帮助

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

[pie drawRect: frame];

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

【问题讨论】:

    标签: ios objective-c pdf uiview cgcontext


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 2012-05-27
      • 1970-01-01
      • 2017-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2016-12-09
      相关资源
      最近更新 更多