【问题标题】:UIPrintPageRenderer paperRect always returns 0x0UIPrintPageRenderer paperRect 总是返回 0x0
【发布时间】:2012-12-21 14:57:22
【问题描述】:

我已经在我的 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。显然它是在打印过程中稍后由委托函数更新的,但我没有进一步探索。

【问题讨论】:

    标签: ios printing ios5 uiprintpagerenderer


    【解决方案1】:

    paperRect 和 printableRect 旨在用于 numberOfPages 来计算页数。 UIKit 不会为 paperRect 和 printableRect 设置任何值,直到用户触摸 UIPrintInteractionController 中的 Print 按钮。

    【讨论】:

    • 你是对的,当我从 UIPrintInteractionController 委托方法 printInteractionControllerDidFinishJob: 检查这些属性时,它们已设置。在打印之前检查它们以获得默认的纸张尺寸,并没有像我想象的那样工作。
    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    相关资源
    最近更新 更多