ios - 打印屏幕外有内容的 UITableView?

标签 ios uitableview uiview printing

您好,我有一个能够打印 UITableView 的 iOS 应用程序。但是,只打印显示的 TableView 部分。有没有办法打印整个表格 View ,即使它还没有被绘制出来?

这是我用来打印的代码:

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];
}

最佳答案

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

SO: Screenshot from a UITableView

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

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

  1. 以编程方式滚动到 UITableView 的不同部分,获取不同的屏幕截图并将它们再次合并在一起。
  2. 调整 UITableView 的大小,使其大到可以容纳所有单元格。警告:这很快会导致内存问题(不再重复使用单元格),所以如果您的单元格数量不是那么多,那么只是为了截图目的而做。

关于ios - 打印屏幕外有内容的 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809723/

相关文章:

swift - 在 Swift 中初始化 UIViews 的惯用模式

ios - 如何在 iOS 中缩放裁剪叠加图像

卸载后的 iOS8/Swift 数据持久化

iphone - (iPhone/iOS) UISearchBar 范围按钮覆盖 UITableView 的第一行

ios - 使 UIView 在用作表头 View 时保持其大小

ios - 长按后 Swift UiTableViewCell 重置

objective-c - iOS:角标(Badge)计数器与通知中心

ios - 将数据从 tableviewcontroller 发送到 detailviewcontroller

ios - Swift - 保存在 TableView 中选择的复选标记

JSON 下载但没有添加到 UITable,但没有错误?