打印UITableView的内容,其中部分内容在屏幕外显示?

4

你好,我有一个iOS应用程序,可以打印UITableView。但是,只会打印出当前显示的部分内容。即使尚未绘制,是否有办法打印整个UITableView?

以下是我用于打印的代码:

UIGraphicsBeginImageContext(self.mainTableView.contentSize);
[self.mainTableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIPrintInteractionController *printer = [UIPrintInteractionController sharedPrintController];
printer.printingItem = viewImage;
UIPrintInfo *info = [UIPrintInfo printInfo];
printer.printInfo = info;
UIPrintInteractionCompletionHandler completionHandler =
^(UIPrintInteractionController *pic, BOOL completed, NSError *error) {
    if (!completed && error)
        NSLog(@"FAILED! due to error in domain %@ with error code %u: %@",
              error.domain, error.code, [error localizedDescription]);
}; 
UIButton * printButton = (UIButton *)sender;
if(UIUserInterfaceIdiomPad == [[UIDevice currentDevice] userInterfaceIdiom]){
    [printer presentFromRect:printButton.frame inView:self.view animated:YES completionHandler:completionHandler];
} else {
    [printer presentAnimated:YES completionHandler:completionHandler];
}
1个回答

3

关于这个问题有很多讨论。以下是两个例子:

SO:如何从UITableView中截图

SO:如何拍摄整个界面的iPhone截图,包括屏幕外部分

问题在于,UITableView重复使用其单元格。 我认为最常见的方法是:

  1. 以编程方式滚动到UITableView的不同部分,获取不同的屏幕截图,然后将它们合并在一起。
  2. 调整UITableView的大小,使其足以容纳所有单元格。警告:这很快会导致内存问题(不再重用任何单元格),因此只适用于截图目的,如果您的单元格数量不大,请使用此方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接