编写了 UIPrintInteractionControllerDelegate
后,我希望在 printInteractionController:choosePaper:
中对其纸张选择功能进行单元测试
其声明是:
optional func printInteractionController(_ printInteractionController: UIPrintInteractionController, choosePaper paperList: [UIPrintPaper]) -> UIPrintPaper
使用预定义的 UIPrintPaper 值调用它并检查输出很简单。但是我无法创建 UIPrintPaper 实例。以下是 UIPrintPaper 的声明方式:
NS_CLASS_AVAILABLE_IOS(4_2)__TVOS_PROHIBITED @interface UIPrintPaper : NSObject
+ (UIPrintPaper *)bestPaperForPageSize:(CGSize)contentSize withPapersFromArray:(NSArray<UIPrintPaper *> *)paperList; // for use by delegate. pass in list
@property(readonly) CGSize paperSize;
@property(readonly) CGRect printableRect;
@end
paperSize 和 printableRect 属性是只读的,没有初始化程序来定义它们。如何创建 UIPrintPaper 来代表我的测试的不同纸张尺寸? (A4、美国信函、4x6...)
最佳答案
无法控制 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
}
}
关于swift - 如何创建打印纸来测试 UIPrintInteractionController Delegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37551043/