IOS SDK - как отображать снимок содержимого таблицыView?

Как экранировать ВСЕ содержимое таблицыView? (все содержимое = видимые + видимая область)

Я пробовал это:

UIGraphicsBeginImageContext(self.tableView.bounds.size);
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.imageView.image = image1;

но это не работает, я имею в виду, что на скриншоте отображается только видимая область: (


Я решил это:))

вот код:)

+ (UIImage *)captureView:(UIScrollView *)view inContentRect:(CGRect)rect{
    UIImage* image = nil;

    CGPoint savedContentOffset = view.contentOffset;
    CGRect savedFrame = view.frame;

    UIGraphicsBeginImageContextWithOptions(view.contentSize, 1, 0);
    view.contentOffset = CGPointZero;
    view.frame = CGRectMake(0, 0, view.contentSize.width, view.contentSize.height);

    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();

    view.contentOffset = savedContentOffset;
    view.frame = savedFrame;

    UIGraphicsEndImageContext();

    // after all of this, crop image to needed size
    return [Utils cropImage:image toRect:rect];                                 
}

Ответ 1

+ (UIImage *)captureView:(UIScrollView *)view inContentRect:(CGRect)rect{
    UIImage* image = nil;

    CGPoint savedContentOffset = view.contentOffset;
    CGRect savedFrame = view.frame;

    UIGraphicsBeginImageContextWithOptions(view.contentSize, 1, 0);
    view.contentOffset = CGPointZero;
    view.frame = CGRectMake(0, 0, view.contentSize.width, view.contentSize.height);

    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();

    view.contentOffset = savedContentOffset;
    view.frame = savedFrame;

    UIGraphicsEndImageContext();

    // after all of this, crop image to needed size
    return [Utils cropImage:image toRect:rect];                                 
}

Ответ 2

Вы должны использовать contentSize.height для получения высоты таблицы.

Попробуйте это

UIGraphicsBeginImageContext(self.tableView.contentSize.height);
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

self.imageView.image = image1;

Ответ 3

Да, вы можете это сделать. Я не могу предоставить рабочий код для того, что вы хотите, я могу просто посоветовать вам, как это сделать. В цикле вы должны получить визуализацию всех частей таблицы, изменив ее contentOffset и поместите каждое изображение в массив. После того, как вы получили все части представления таблицы, вам нужно соединить части таблицы с одним изображением (нарисуйте каждое изображение в cgimagecontext, не забудьте установить правильный размер для изображения результата). Что это, это не так сложно:) Надеюсь, это поможет, Удачи!