Jac*_*sey 27 pdf uiview ipad ios
我有一个iPad应用程序,我正在尝试从UIView生成一个PDF,它几乎完美地工作.
代码非常简单如下:
UIGraphicsBeginPDFContextToFile( filename, bounds, nil );
UIGraphicsBeginPDFPage();
CGContextRef pdfContext = UIGraphicsGetCurrentContext();
[view.layer renderInContext:pdfContext];
UIGraphicsEndPDFContext();
Run Code Online (Sandbox Code Playgroud)
这非常适用于一个奇怪的例外.如果在渲染为PDF之前视图已在屏幕上,则视图上的UILabel将作为精彩向量呈现给PDF.如果视图尚未显示在屏幕上(IE控制器是initWithNib等但尚未被推入导航控制器或其他任何东西),则文本将以"ipad"分辨率呈现为位图.
当我随后将其渲染为pdf上下文时,就像渲染到屏幕上的行为一样将视图渲染为矢量.
是否有一些我可以调用的方法或属性我可以在视图或图层或其他地方设置以模仿此行为而无需在屏幕上显示视图?
它与UIViewPrintFormatter有关吗?
mar*_*rux 23
我发现它的唯一方法是使标签呈现矢量化是使用UILabel的子类,方法如下:
/** 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];
}
Run Code Online (Sandbox Code Playgroud)
这对我来说就是这个诀窍:标签在结果PDF视图中是未经过筛选和可选择的,并且在渲染到屏幕时表现正常.
| 归档时间: |
|
| 查看次数: |
5635 次 |
| 最近记录: |