【发布时间】:2018-04-24 21:45:55
【问题描述】:
我有一个带有子视图的 UIView,如下图所示。
在这里我必须打印或分享标记的 - 视图。
为了分享,我将标记的 UIView 转换为 PDF 并在电子邮件中分享。效果完全符合我的客户的预期。
为了打印,我将标记的 UIView 转换为 UIImage 并打印出来。它也可以工作,但我除了必须打印转换后的 UIImage 并缩放到页面。 但收据打印太小,如下图(Epson TM-T88V 打印机)。
我将 UIView 转换为 UIImage 的代码:
extension UIView {
func toImage() -> UIImage {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
drawHierarchy(in: self.bounds, afterScreenUpdates: false)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
}
我打印图片的代码:
@IBAction func act_PrintBtnPressed(_ sender: UIButton) {
m_PrintView.frame.size.height = view.frame.size.height
let printInfo = UIPrintInfo(dictionary:nil)
printInfo.outputType = UIPrintInfoOutputType.photo
printInfo.jobName = "PrintingReceipt"
printInfo.orientation = .portrait
let printController = UIPrintInteractionController.shared
printController.printInfo = printInfo
printController.printingItem = m_PrintView.toImage()
printController.showsNumberOfCopies = false
printController.present(animated: true, completionHandler: nil)
}
最后,如何设置份数必须在代码中打印。因为不想在UI中设置份数,所以我将printController.showsNumberOfCopies设置为false。
请指导我创建这个。
【问题讨论】:
标签: ios swift uiprintinteractioncntrler uiprintformatter