tableViewのすべてのコンテンツをスクリーンショットする方法は? (全てのコンテンツは=見えるが+表示領域ではありません)IOS SDK - tableViewのショットコンテンツをスクリーニングする方法は?
私はこの試みた:私はそれだけで目に見えるエリアのスクリーンショットです意味、
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];
}
「self.tableView.bounds.size」の代わりに '[(UIScrollView *)super contenSize]'を使用することができますか? – trojanfoe
私はあなたがそれをすることができるとは思わない。 UITableViewはセルを再利用します。つまり、現在表示されているセルは現在UITableViewに追加されている唯一のセルです。 UITableViewをスクロールしているときには、下に向かって、UITableViewは一番上のセルが消えて、新しいコンテンツが一番下にあるように再構成してそこに追加します。したがって、UITableView全体のスクリーンショットを撮ることができれば、表示されていないセルは単に存在しないため、UITableViewの現在表示されている領域にのみコンテンツが表示されます。 – Trenskow
@Trenskow実際、それはあなたが述べたように不可能ではありません。ほんの少しのロジックがあり、これを行うことができます:) –