ios - 在不呈现/显示 UIView 的情况下将 UIVIew 转换为 UIImage

标签 ios objective-c uiview xamarin.ios uiimage

我正在使用方法将 UIView 转换为 UIImage ,当 UIView (要转换为 UIImage)已经存在/显示时,它做得很好。但我的要求是将UIView转换为UIImage而不显示UIView。不幸的是,这段代码在这种情况下失败了,我陷入了困境。任何帮助将不胜感激。

我正在使用以下方法:

+ (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque,     [[UIScreen mainScreen] scale]); 
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;
}

最佳答案

您的代码可能会失败,因为您没有布置 View 的 subview (当您将 View 添加为 subview 时,这是自动完成的)。尝试类似我在下面写的方法:

+ (UIImage *)imageFromView:(UIView *)view sized:(CGSize)size
{
    // layout the view
    view.frame = CGRectMake(0, 0, size.width, size.height);
    [view setNeedsLayout];
    [view layoutIfNeeded];

    // render the image
    UIGraphicsBeginImageContextWithOptions(size, view.opaque, 0.0f);
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
    UIImage *renderedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return renderedImage;
}

关于ios - 在不呈现/显示 UIView 的情况下将 UIVIew 转换为 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38757704/

相关文章:

ios - SDK不包含bitcode ios

iphone - 将单个数组分成两个数组的代码如何?

iphone - 已旋转的 uiview 的四个点的坐标

iphone - 在没有支持变量的情况下在 Xcode 调试器中查看合成属性的值

iphone - CCLayerColor 没有按预期工作

ios - 在 iPad 上,当浏览器为 'closed' 时,如何使网页上的嵌入声音停止播放?

ios - Google Maps SDK 无法在 UIView 中正确显示?

objective-c - 如何防止 UIView 背景旋转?

xcode - 旋转 UIView 以提供透视

swift - 使用自动布局设置 UIView 高度以适合 UILabel subview