我已經認爲幾乎適合A4頁面。現在我想打印它。請注意,我沒有使用drawRect或類似的東西,只是具有子視圖和文本標籤的普通視圖。我的問題是,我對這個視圖有一些看法,我使用圖層來放置背景顏色和圓角矩形。子視圖不打印,但打印所有文本標籤。在可可中打印
_printReport只是一個帶有視圖和一堆文本標籤的普通窗口。
我在做什麼錯,我怎麼能做得更好?我真的不想做一個正確的,但我會如果我必須。
這裏是當有人打印出發生代碼:
- (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,這裏是我的裝飾品之一:
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];
當我在屏幕上顯示窗口時,它看起來就像我想要的那樣,但上面的圓形矩形不會被打印,但是它上面的所有標籤都可以。