0

NSDocument子类中,具有此功能:

override func printOperationWithSettings(printSettings: [String : AnyObject]) throws -> NSPrintOperation {
    let printInfo: NSPrintInfo = self.printInfo
    var pageSize = printInfo.paperSize
    pageSize.width -= printInfo.leftMargin + printInfo.rightMargin
    pageSize.height -= printInfo.topMargin + printInfo.bottomMargin
    pageSize.width = pageSize.width * 2
    pageSize.height = pageSize.height * 2
    let myPage = MyPage(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: pageSize))
    let printOperation = NSPrintOperation(view: myPage, printInfo: printInfo)
    return printOperation
}

对于这个测试,MyPage 是一个NSView仅绘制椭圆的子类。

class MyPage: NSView {

override var flipped: Bool {
    return true
}

override func drawRect(dirtyRect: NSRect) {
    super.drawRect(dirtyRect)

    NSColor.greenColor().set() // choose color
    let figure = NSBezierPath() // container for line(s)
    figure.appendBezierPathWithOvalInRect(self.frame)
    figure.stroke()  // draw line(s)
}    
}

我希望这会在打印面板中显示四页,但它只显示两页,相当于椭圆的左上角和左下角。无论我使 myPage 的框架有多宽,都只会显示最左边的页面。任何想法为什么?谢谢!

4

0 回答 0