我已经在我的 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 返回一个默认的纸张大小。如果它在用户选择打印机后再次运行(例如,在打印第二个文档时),我希望它返回为该打印机选择的纸张尺寸。但这只是我的期望......文档没有解释何时或如何设置其值。
了解其他人是否获得相同的结果或者我是否需要做其他事情来获得真实的页面大小会很有帮助。
PS 我还查看了 UIPrintInteractionController 的 paperSize 属性,当包含在上面的代码中时,它也返回 0x0。显然,它稍后在打印过程中由委托函数更新,但我没有进一步探索。