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

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

这是一种常见的做法吗?

【问题讨论】:

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

标签: ios objective-c uiview uiimageview


【解决方案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)
}

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2019-07-25
    相关资源
    最近更新 更多