把 UIView 变成 UIImage

Posted

技术标签:

【中文标题】把 UIView 变成 UIImage【英文标题】:Turn a UIView into a UIImage 【发布时间】:2013-03-10 16:47:46 【问题描述】:

如何以编程方式将 UIView(子视图作为 UIImageViews)转换为 UIImage?

这是一种常见的做法吗?

【问题讨论】:

这当然不完全常见,但有时需要。假设您想创建一些非常棒的动画来显示/隐藏您的视图。假设动画需要将您的视图分成几个部分(例如折叠)。对于这种情况,不可避免地要使用原始视图的“硬拷贝”。 【参考方案1】:

您似乎想要特定视图的“屏幕截图”?

UIGraphicsBeginImageContext(view.bounds.size); 
CGContextRef ctx = UIGraphicsGetCurrentContext();
[view.layer renderInContext:ctx];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

【讨论】:

非常简单。感谢您提供代码 sn-p。添加到 UIView 的类别中是一件好事,因此它始终可用。 编辑的小细节:view.size 我认为需要是 view.frame.size【参考方案2】:

对于在 ios 10+ 上寻找 Swift 4 答案的任何人

let renderer = UIGraphicsImageRenderer(bounds: view.bounds)
let image = renderer.image  rendererContext in
    view.layer.render(in: rendererContext.cgContext)

【讨论】:

以上是关于把 UIView 变成 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

为啥我拖入 xib 文件的任何 UIView 都会变成 iPhone XR?

swift - 当设备旋转到横向(iPhone/iPad)时,如何让 UIView 变成全屏?

Alpha 混合和 UIView 背景颜色

UIView翻转动画

UIView 作为字典键?

把UIView转成UIImage,解决模糊失真问题