Распечатать UITableView с контентом за пределами экрана? - PullRequest
4 голосов
/ 21 марта 2012

Привет, у меня есть приложение для iOS, которое может распечатать 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 голосов
/ 30 апреля 2013

Существует много дискуссий по этой проблеме.Два примера:

SO: снимок экрана из UITableView

SO: как сделать снимок экрана iPhone с полным обзором, включая детали, вне экрана

Проблема в том, что UITableViews повторно используют свои ячейки.Я думаю, что наиболее распространенные подходы:

  1. Программная прокрутка к различным частям вашего UITableView, создание разных скриншотов и их объединение снова.
  2. Изменение размера UITableView таким большим, чтовсе клетки вписываются в него.ПРЕДУПРЕЖДЕНИЕ. Это быстро приводит к проблемам с памятью (повторное использование ячеек больше не требуется), поэтому просто сделайте это для скриншотов и если количество ячеек не так велико.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...