【问题标题】:How to print an NSOutlineView with NSVIew.printView如何使用 NSVIew.printView 打印 NSOutlineView
【发布时间】:2021-05-08 10:15:33
【问题描述】:

我想打印一个 NSOutlineView。视图是屏幕上窗口的子视图。我注意到 NSView api 调用 printView。所以我以一种简单的方式尝试了它。在我的 AppDelegate 中,我有一个电话:

@IBAction func doPrint(_ sender: Any?) {
    globalOutlineCntrl?.outlineView.printView(self)
}

因此,在屏幕上包含大纲的窗口中,我发出了 doPrint 调用。

屏幕上的轮廓如下所示: doPrint 调用似乎有效,但会打印: 有没有办法使这项工作?如果不是如何打印子视图大纲?

【问题讨论】:

  • 你试过光模式吗?您要打印屏幕上的内容(弹出按钮)还是要打印报告?
  • 我刚刚尝试了轻模式,它实际上以可读的形式打印了轮廓!我实际上想打印更多的报告,它可能是多页的。
  • 如果你想打印一份报告然后创建一个屏幕外NSOutlineView,在代码中或从故事板/xib加载。视图不必在窗口中。使用相同的数据,也可能使用相同的数据源和委托。使用NSPrintOperation(view:) 创建NSPrintOperation 并运行此操作。打印并不容易,如果遇到困难,请提出新问题。

标签: macos cocoa printing nsoutlineview


【解决方案1】:

深色模式会导致一些打印问题。最简单的解决方法是创建一个具有强制光外观的单独的程序化视图,克隆所需的内容,然后打印该视图。

view.appearance = NSAppearance(named: .aqua)

【讨论】:

  • 对不起,我的回答也是.darkAqua,而不是正确的.aqua。哈哈,对不起。
  • 这听起来像是这样做的方法,但我的尝试不起作用(打印空白页)。 @IBAction func doPrint(_ sender: Any?) { 让 archivedView = NSKeyedArchiver.archivedData(withRootObject: globalOutlineCntrl!.outlineView as NSOutlineView) 让 myViewCopy = NSKeyedUnarchiver.unarchiveObject(with: archivedView) 作为! NSOutlineView myViewCopy.appearance = NSAppearance(named: .aqua) myViewCopy.printView(self) }
  • 我会接受这个答案并问另一个问题为什么克隆不起作用。
猜你喜欢
  • 2010-10-09
  • 2011-09-07
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
相关资源
最近更新 更多