Objective-C Full UIView to PDF

use*_*331 6 pdf objective-c uiview ios

我在这里有这个代码,我把UIView放入PDF中.我遇到的问题是我的视图是一个详细视图控制器并且是可滚动的,而PDF只获取当时详细视图控制器内部的内容而不是完整视图,如果我在详细视图中移动,它将捕获任何内容部分我在,而不是完整的事情.我正在尝试做什么?

- (IBAction)Share:(id)sender {

    NSMutableData *pdfData = [NSMutableData data];

    // Points the pdf converter to the mutable data object and to the UIView to be converted
    UIGraphicsBeginPDFContextToData(pdfData, spreadSheet.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();


    // draws rect to the view and thus this is captured by UIGraphicsBeginPDFContextToData

    [spreadSheet.layer renderInContext:pdfContext];

    // remove PDF rendering context
    UIGraphicsEndPDFContext();

    // Retrieves the document directories from the iOS device
    NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:@"test.pdf"];

    // instructs the mutable data object to write its context to a file on disk
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);


    UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:@[pdfData] applicationActivities:nil];

    UIPopoverController *popup = [[UIPopoverController alloc] initWithContentViewController:activityController];

    [popup presentPopoverFromRect:CGRectMake(self.view.frame.size.width - 36, 60, 0, 0)inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

}
Run Code Online (Sandbox Code Playgroud)

UPDATE

我一直在努力解决这个问题,我无法全面了解PDF,我一直在考虑采用我的NSMutableArray和我的NSArray的路线,这是我的UIView中使用的数据,并尝试将其转换为除非有人知道如何做到这一点,否则制作格式很简单,这听起来非常费时.我想我很困惑我应该采取哪条路线.

Ink*_*lem 1

将某些内容渲染到上下文中只会渲染视图层次结构中当前的内容。这意味着,如果您使用UITableViewUICollectionView,则并非代表数据的每个单元格在任何给定时间都位于层次结构中。如果是我,我会尝试暂时将视图设置为具有巨大的框架,以便所有内容都位于层次结构中。如果这不起作用,我将编写一个自定义视图,根据请求可以为所有数据布局所有内容,然后在渲染完成后重置为更有效的布局。