UIPrintPageRenderer paperRect始终返回0x0

时间:2012-08-22 17:34:21

标签: ios printing ios5 uiprintpagerenderer

我已在我的iOS应用中设置打印,但效果很好。但是,我根据用户对页面大小的偏好生成我的文档。我希望我可以从打印机系统中检测页面大小并使用它。 UIPrintPageRenderer的paperRect属性看起来就像我需要的那样,但它总是为我返回0x0的大小。我错过了什么吗?这是代码:

UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController];
UIPrintPageRenderer *pageRenderer = [[UIPrintPageRenderer alloc] init];
printController.printPageRenderer = pageRenderer;
NSLog(@"paper size: %f x %f", pageRenderer.paperRect.size.width, pageRenderer.paperRect.size.height);

当iOS 4.2出现时我尝试了这个,当我得到0x0时,我认为它是第一版的bug并实现了用户首选项。但是现在我在iOS 5.1中看到了同样的问题,我想知道我做错了什么。

当此代码运行时,用户尚未选择打印机,因此我希望paperRect返回默认纸张尺寸。如果在用户选择打印机后再次运行(例如,当打印第二个文档时),我希望它能够返回为该打印机选择的纸张尺寸。但这只是我的期望...... documentation没有解释何时或如何设置其值。

知道其他人是否获得相同的结果,或者我是否需要做其他事情以获得真正的页面大小会很有帮助。

P.S。我还查看了UIPrintInteractionController的paperSize属性,该属性在上面的代码中包含时也返回0x0。显然,它在稍后的打印过程中由委托功能更新,但我没有进一步探讨。

1 个答案:

答案 0 :(得分:1)

paperRect和printableRect旨在用于numberOfPages来计算页数。 在用户触摸UIPrintInteractionController中的“打印”按钮之前,UIKit不会为paperRect和printableRect设置任何值。