将自定义的 UITableViewCell 导出到 UIImage

发布于 2024-10-01 16:04:29 字数 223 浏览 6 评论 0原文

我有一个 UITableView,其中包含一组 UITableViewCell - 每个单元格都包含一个 UIView,它在上下文中显示一些图形。 将这些单元格导出到一个 UIImage 中的最佳方法是什么?

谢谢

编辑1:我知道如何从表格的可视区域创建图像,但是该表格滚动到屏幕之外,我想创建所有单元格的UIImage,而不仅仅是那些你看到的。

I have a UITableView with a set of UITableViewCells in it - each of the cells contain a UIView which shows some graphics in a context.
What would be the best way to export these cells into one UIImage?

Thanks

edit 1: I know how to create an image from the viewable area of the table, but this table scrolls out of the screen and I would like to create a UIImage of all of the cells, not only those you see.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

怀里藏娇 2024-10-08 16:04:29

您应该能够通过告诉视图层绘制到自定义图形上下文中,然后从该上下文创建位图 CGImage 来完成此操作。一旦你有了 CGImage,你就可以用它创建一个 UIImage。它大致看起来像这样:

// Create a bitmap context.
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContextForCell = CGBitmapContextCreate(nil, cell.bounds.size.width, cell.bounds.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);

// Draw the cell's layer into the context.
[cell.layer renderInContext:bitmapContextForCell];

// Create a CGImage from the context.
CGImageRef cgImageForCell = CGBitmapContextCreateImage(bitmapContextForCell);

// Create a UIImage from the CGImage.
UIImage * cellImage = [UIImage imageWithCGImage:cgImageForCell];

// Clean up.
CGImageRelease(cgImageForCell);
CGContextRelease(bitmapContextForCell);

这就是为每个单元格创建图像的方法。如果您想为所有单元格创建一张图像,请使用表格视图而不是单元格。

You should be able to do this by telling the view's layer to draw into a custom graphics context, then creating a bitmapped CGImage from that context. Once you have a CGImage, you can create a UIImage from it. It would look roughly like this:

// Create a bitmap context.
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmapContextForCell = CGBitmapContextCreate(nil, cell.bounds.size.width, cell.bounds.size.height, 8, 0, colorSpace, kCGImageAlphaNone);
CGColorSpaceRelease(colorSpace);

// Draw the cell's layer into the context.
[cell.layer renderInContext:bitmapContextForCell];

// Create a CGImage from the context.
CGImageRef cgImageForCell = CGBitmapContextCreateImage(bitmapContextForCell);

// Create a UIImage from the CGImage.
UIImage * cellImage = [UIImage imageWithCGImage:cgImageForCell];

// Clean up.
CGImageRelease(cgImageForCell);
CGContextRelease(bitmapContextForCell);

That's how to create a image for each cell. If you want to create one image for all your cells, use your table view instead of the cell.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文