打印具有屏幕内容的UITableView?
问题描述:
嗨我有一个iOS应用程序,可以打印UITableView。但是,只显示了所显示的tableview的一部分。有没有办法打印整个tableview,即使它还没有绘制?打印具有屏幕内容的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];
}
答
有这个问题多次讨论。举两个例子:
SO: Screenshot from a UITableView
SO: How to take an iPhone screenshot of entire view including parts off screen
的问题是,UITableViews重用他们的细胞。 我认为最常见的方法是:
- 滚动编程到您的UITableView的不同部分,以不同的屏幕截图,并将它们重新合并在一起。
- 调整UITableView的大小,使其大小适合所有单元格。警告:这很快就会导致内存问题(不再使用单元格),因此只是为了屏幕截图的目的,并且如果您的单元格数量不是那么大。