我有一个UITableView
,我想捕获它的可见部分,并将其放入一个UIImage
. 有什么办法吗?
编辑
下面自答
我有一个UITableView
,我想捕获它的可见部分,并将其放入一个UIImage
. 有什么办法吗?
编辑
下面自答
感谢您的回复。所有答案都适用于 UIView,但不适用于 UITableView - 至少在表格滚动时不会。滚动时,捕获的图像将显示为黑色或透明。我之前尝试过与以下类似的解决方案。我猜人们认为答案是显而易见的,这就是我被否决的原因——因为我很顽皮地提出了如此明显的问题。
无论如何,真正的解决方案是您必须使用表格的 contentOffset:
- (UIImage *) imageWithTableView:(UITableView *)tableView
{
UIView *renderedView = tableView;
CGPoint tableContentOffset = tableView.contentOffset;
UIGraphicsBeginImageContextWithOptions(renderedView.bounds.size, renderedView.opaque, 0.0);
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(contextRef, 0, -tableContentOffset.y);
[tableView.layer renderInContext:contextRef];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
UIGraphicsBeginImageContext(someView.bounds.size);
[someView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
取自这个问题。
- (UIImage *)captureView {
//hide controls if needed
CGRect rect = [yourTableView bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[yourTableview.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
UIGraphicsBeginImageContext(tableView.bounds.size);
[tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
也许这些帖子会有所 帮助