我正在尝试使用NSView
对象保存 PDF 文件。这是Square
类(的子类NSView
)的实现。
@implementation Square
- (id)initWithColor:(NSColor *)aColor;
{
if (self = [super init])
{
self.frame = NSMakeRect(0, 0, 50, 50);
self.color = aColor;
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
[self.color set];
NSRectFill(dirtyRect);
}
这是 my DrawView
- sublcass 的实现的一部分NSView
- (void)awakeFromNib
{
squareGroup = [[NSMutableArray alloc] init];
}
- (void)addSquare:(Square *)square
{
[squareGroup addObject:square];
[self addSubview:square];
}
- (void)drawRect:(NSRect)dirtyRect
{
[[NSColor whiteColor] set];
NSRectFill(dirtyRect);
}
我可以单击按钮Red
或Blue
添加Square
蓝色或红色的对象,当我单击时,Save
我想保存DrawView
带有Square
对象的白色。我现在可以移动Square
物体,DrawView
所以每个Square
物体都在不同的地方。
我的保存方法如下所示(在DrawView
课堂上):
- (void)saveAsPDF
{
NSString *homeDirectory = NSHomeDirectory();
NSURL *fileURL = [NSURL fileURLWithPath:[homeDirectory stringByAppendingPathComponent:@"file.pdf"]];
CGRect mediaBox = self.bounds;
CGContextRef ctx = CGPDFContextCreateWithURL((__bridge CFURLRef)(fileURL), &mediaBox, NULL);
CGPDFContextBeginPage(ctx, NULL);
for (Square *square in squareGroup) {
[square.layer renderInContext:ctx];
}
[self.layer renderInContext:ctx];
CGPDFContextEndPage(ctx);
CFRelease(ctx);
}
结果我在主目录中只有空白文件。
我的保存方法有什么问题?我怎样才能正确地做到这一点?