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, не забудьте установить правильный размер для изображения результата). Что это, это не так сложно:) Надеюсь, это поможет, Удачи!