我已经在我的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时,我发现这是一个第一版错误,并实现了用户首选项。但是现在我在iOS 5.1中看到了同样的问题,我想知道我做错了什么。

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

知道其他人是否获得了相同的结果,或者是否需要做其他事情来获得实际的页面大小,这将很有帮助。

附言我还查看了UIPrintInteractionController的paperSize属性,当上面的代码包含该属性时,该属性还会返回0x0。显然,它是在打印过程中稍后通过委托函数进行更新的,但我没有对此进行进一步的探讨。

最佳答案

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

关于ios - UIPrintPageRenderer paperRect始终返回0x0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12078461/

10-10 15:24