打印屏幕外有内容的 UITableView?

Posted

技术标签:

【中文标题】打印屏幕外有内容的 UITableView?【英文标题】:Print UITableView that has content off screen? 【发布时间】:2012-03-21 17:25:28 【问题描述】:

您好,我有一个能够打印 UITableView 的 ios 应用。但是,仅打印了显示的 tableview 的部分。有没有办法打印整个 tableview,即使它还没有被绘制?

这是我用来打印的代码:

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】:

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

SO: Screenshot from a UITableView

SO: How to take an iPhone screenshot of entire view including parts off screen

问题是,UITableView 会重复使用它们的单元格。 我认为最常见的方法是:

    以编程方式滚动到 UITableView 的不同部分,截取不同的屏幕截图并将它们再次合并在一起。 调整 UITableView 的大小,使其大到所有单元格都适合它。警告:这很快会导致内存问题(不再重复使用单元格),因此,如果您的单元格数量不是很大,请仅用于屏幕截图。

【讨论】:

以上是关于打印屏幕外有内容的 UITableView?的主要内容,如果未能解决你的问题,请参考以下文章

触摸事件未在 UITableView 上触发

UITableView 单元格折叠动画看起来很糟糕

如何为所有屏幕的 iPhone 应用程序添加垂直滑动手势?

如何打印具有多个数据的标题和uitableview的uiwebview

如何使用多个数据打印带有标题和uitableview的uiwebview

如何使 UITableView 内容围绕中心点滚动