我目前正在使用CALayer
andrenderInContext
方法从 iOS 中的 UIView 创建 PDF 文档。
我面临的问题是标签的清晰度。我创建了一个像这样UILabel
覆盖的子类drawLayer
:
/** Overriding this CALayer delegate method is the magic that allows us to draw a vector version of the label into the layer instead of the default unscalable ugly bitmap */
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
BOOL isPDF = !CGRectIsEmpty(UIGraphicsGetPDFContextBounds());
if (!layer.shouldRasterize && isPDF)
[self drawRect:self.bounds]; // draw unrasterized
else
[super drawLayer:layer inContext:ctx];
}
这种方法可以让我画出漂亮清晰的文本,但是,问题在于我无法控制的其他视图。有没有什么方法可以让我对嵌入的标签做类似的事情UITableView
or UIButton
。我想我正在寻找一种方法来遍历视图堆栈并做一些事情来让我绘制更清晰的文本。
这是一个示例:此文本呈现得很好(我的自定义 UILabel 子类)
标准分段控件中的文本没有那么清晰:
编辑:我正在获取要绘制到我的 PDF 中的上下文,如下所示:
UIGraphicsBeginPDFContextToData(self.pdfData, CGRectZero, nil);
pdfContext = UIGraphicsGetCurrentContext();
UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);
[view.layer renderInContext:pdfContext];