把 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?