gpt4 book ai didi

ios - 将 UIView 渲染为没有 subview 的图像

转载 作者:可可西里 更新时间:2023-11-01 05:55:19 24 4
gpt4 key购买 nike

我想将 UIView 转换为 UIImage

- (UIImage *)renderToImage:(UIView *)view {
if(UIGraphicsBeginImageContextWithOptions != NULL) {
UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, 0.0);
} else {
UIGraphicsBeginImageContext(view.frame.size);
}

[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}

两个问题:

  1. 我的 View 有 subview 。有没有办法在没有任何 subview 的情况下创建 View 的图像?理想情况下,我不想删除它们只是为了稍后再添加回来。

  2. 此外,它无法在 Retina 设备上正确渲染图像。我按照此处的建议使用带选项的上下文,但没有帮助。 How to capture UIView to UIImage without loss of quality on retina display

最佳答案

您必须隐藏您不希望出现在 View 图像中的 subview 。下面是渲染视网膜设备 View 图像的方法。

- (UIImage *)imageOfView:(UIView *)view
{

// This if-else clause used to check whether the device support retina display or not so that
// we can render image for both retina and non retina devices.

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)])
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
} else {
UIGraphicsBeginImageContext(view.bounds.size);
}


[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

关于ios - 将 UIView 渲染为没有 subview 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18625839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com