Làm cách nào để chụp màn hình TẤT CẢ nội dung của tableView? (Tất cả các nội dung = có thể nhìn thấy được + KHÔNG vùng hiển thị)IOS SDK - làm thế nào để chụp màn hình nội dung của tableView?
Tôi cố gắng này:
UIGraphicsBeginImageContext(self.tableView.bounds.size);
[self.tableView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* image1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.imageView.image = image1;
nhưng nó không hoạt động, tôi có nghĩa là nó chụp màn hình chỉ hiển thị khu vực :(
tôi giải quyết nó :))
đây là mã :)
+ (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];
}
Bạn cần nhận kích thước của chế độ xem cuộn kèm theo, vì vậy có thể sử dụng: '[(UIScrollView *) super contenSize]' thay vì 'self.tableView.bounds.size'? – trojanfoe
Tôi không nghĩ rằng bạn có thể làm điều đó. UITableView tái sử dụng các ô, có nghĩa là, các ô hiện đang hiển thị, là các ô duy nhất hiện được thêm vào UITableView. Khi bạn cuộn một UITableView - hãy nói xuống - UITableView lấy ra các ô biến mất ở trên cùng, cấu hình lại chúng để nội dung mới có sẵn ở dưới cùng, và sau đó thêm chúng ở đó. Vì vậy nếu bạn có thể chụp ảnh màn hình của toàn bộ UITableView, bạn sẽ thấy, rằng nó sẽ chỉ có nội dung trong khu vực hiện có của UITableView, vì các ô không được hiển thị đơn giản là không tồn tại. – Trenskow
@Trenskow Thực ra điều đó không thể như bạn đã nói. Chỉ cần một chút logic hơn một chút, và bạn có thể làm điều này :) –