我有一个很长的UITableView,我想将它导出为UIImage。以下是我的代码:
- (UIImage*)imageFromTableView {
UITableView *view = self.tableView;
CGSize size = view.bounds.size;
size.height = [self maxYOfRestaurantCellInTableView];
CGPoint oldOffset = view.contentOffset;
CGRect oldFrame = view.frame;
UIGraphicsBeginImageContextWithOptions(size, YES, [[UIScreen mainScreen] scale]);
view.contentOffset = CGPointMake(0, 0);
view.frame = CGRectMake(0, 0, size.width, size.height);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
view.contentOffset = oldOffset;
view.frame = oldFrame;
return image;
}
诀窍是:暂时将tableview的框架设置为其内容大小,希望它会强制tableview加载所有单元格。
以上代码在iOS8上运行正常。但是,在iOS7上,仅渲染屏幕上的区域,导出图像中屏幕外的区域为黑色。
有人可以帮忙吗?