编写了log4j.appender.file.File=C:\\Users\\Madjura\\Desktop\\log.log
之后,我希望在UIPrintInteractionControllerDelegate
其声明是:
printInteractionController:choosePaper:
使用预定义的UIPrintPaper值调用它并检查输出是一件简单的事情。但是我无法创建UIPrintPaper实例。以下是UIPrintPaper的声明方式:
optional func printInteractionController(_ printInteractionController: UIPrintInteractionController, choosePaper paperList: [UIPrintPaper]) -> UIPrintPaper
paperSize和printableRect属性是只读的,没有初始化程序来定义它们。如何创建UIPrintPaper来表示我的测试的不同纸张尺寸? (A4,US Letter,4x6 ......)
答案 0 :(得分:1)
无法控制UIPrintPaper,但是将其子类化以覆盖其只读属性是直截了当的:
class FakePrintPaper: UIPrintPaper {
private let size: CGSize
override var paperSize: CGSize { return size }
override var printableRect: CGRect { return CGRect(origin: CGPointZero, size: size) }
init(size: CGSize) {
self.size = size
}
}
答案 1 :(得分:0)
使用UIPrintPaper
类方法bestPaperForPageSize
:
let paper = UIPrintPaper.bestPaperForPageSize(CGSize(...), withPapersFromArray: [...])
我想你会想要像这样使用它:
class MyClass: NSObject { }
extension MyClass: UIPrintInteractionControllerDelegate {
func printInteractionController(printInteractionController: UIPrintInteractionController, choosePaper paperList: [UIPrintPaper]) -> UIPrintPaper {
return UIPrintPaper.bestPaperForPageSize(CGSize(...), withPapersFromArray: paperList)
}
}
CGSize是您的纸张尺寸。
答案 2 :(得分:0)
我不认为你应该创建UIPrintPaper。 Apple API调用:
- (UIPrintPaper*)printInteractionController:(UIPrintInteractionController *)printInteractionController choosePaper:(NSArray<UIPrintPaper *> *)paperList
...在您的UIPrintInteractionControllerDelegate上,您的打印机支持的所有UIPaper数组。如果你没有得到你想要的那个,那么打印机就不支持它。
因此,不是创建一个,而是实现此委托调用,并从打印机支持的参数中返回正确的UIPrintPaper。