0

A4ページにほぼ収まるビューを作成しました。今、私はそれを印刷したい。drawRect などを使用していないことに注意してください。サブビューとテキスト ラベルを含む通常のビューです。私の問題は、そのビューにいくつかのビューがあり、レイヤーを使用して背景色とアイテムの周りに丸みを帯びた四角形を配置していることです。サブビューは印刷されませんが、すべてのテキスト ラベルが印刷されます。

_printReport は、ビューと多数のテキスト ラベルを備えた単純なウィンドウです。

私は何を間違っていますか?どうすればこれを改善できますか? 私は実際には drawrect を実行したくありませんが、必要に応じて実行します。

誰かが印刷したときに発生するコードは次のとおりです。

- (void)printWorksheet {
    TJContact *worksheet = [[self.workSheets selectedObjects] objectAtIndex:0];
    if (worksheet == nil) return;

    _printReport = [[TJPrintReportWindowController alloc] initWithWindowNibName:@"TJPrintReportWindowController"];
    [self.printReport setCompany:self.company];
    [self.printReport setContact:worksheet];

    [self.printReport showWindow:self];
    [self.printReport becomeFirstResponder];
    [self.printReport.view becomeFirstResponder];
    NSPrintInfo* printInfo = [NSPrintInfo sharedPrintInfo];

    [printInfo setHorizontalPagination:NSFitPagination];
    [printInfo setVerticalPagination:NSFitPagination];
    [printInfo setHorizontallyCentered:YES];
    [printInfo setVerticallyCentered:YES];
    [printInfo setLeftMargin:20.0];
    [printInfo setRightMargin:20.0];
    [printInfo setTopMargin:10.0];
    [printInfo setBottomMargin:10.0];

    NSPrintOperation* printOperation = [NSPrintOperation printOperationWithView:self.printReport.view printInfo:printInfo];
    [printOperation setShowsPrintPanel:YES];
    [printOperation runOperationModalForWindow:[self window] delegate:nil didRunSelector:nil contextInfo:nil];
}

これが役立つかどうかはわかりませんが、メイン ビューでは setWantsLayers が YES になっています。これが私の装飾の 1 つです。

CALayer *customerLayer = [self.customerView layer];
[customerLayer setCornerRadius:10];
[customerLayer setBackgroundColor:[NSColor colorWithDeviceWhite:0 alpha:0.30].CGColor];
[customerLayer setBorderColor:[NSColor blackColor].CGColor];
[customerLayer setBorderWidth:1.5];

ウィンドウを画面に表示すると、希望どおりに表示されますが、上記の丸い四角形は印刷されませんが、その上にあるすべてのラベルは印刷されます。

4

2 に答える 2

0

レイヤーは印刷時に表示されません。独自の NSView オブジェクトを作成し、 drawRect 関数を実行して背景ビューとして配置する必要がありました。その後、何もせずに自動的に印刷されました。

于 2012-11-23T12:03:05.070 に答える