2012-03-21 36 views
4

嗨我有一个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]; 
} 

回答

3

有这个问题多次讨论。举两个例子:

SO: Screenshot from a UITableView

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

的问题是,UITableViews重用他们的细胞。 我认为最常见的方法是:

  1. 滚动编程到您的UITableView的不同部分,以不同的屏幕截图,并将它们重新合并在一起。
  2. 调整UITableView的大小,使其大小适合所有单元格。警告:这很快就会导致内存问题(不再使用单元格),因此只是为了屏幕截图的目的,并且如果您的单元格数量不是那么大。