编写了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,但是将其子类化以覆盖其readonly属性很简单:
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 - 如何创建UIPrintPaper来测试UIPrintInteractionControllerDelegate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37551043/