在iOS 7上渲染整个UITableView作为UIImage失败

时间:2015-06-10 17:35:04

标签: ios

我有一个很长的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上,仅渲染屏幕上的区域,导出图像中屏幕外的区域为黑色。

有人可以帮忙吗?

0 个答案:

没有答案