美文网首页
iOS View 转换图片

iOS View 转换图片

作者: AZander | 来源:发表于2018-12-20 11:36 被阅读34次

iOS View 转换图片

可采用以下几种方法

  • 1、UIView的drawHierarchy方法 (Used when simple hierarchy
    func snapshotHierarchy() -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, true, scaleHight())
        self.drawHierarchy(in: self.bounds, afterScreenUpdates: true)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
  • 2、UIGraphicsImageRenderer方法(iOS10新增的方法,iPhone7及其以上设备采用广色域屏幕及16位色域(16 color gamut))
    @available(iOS 10.0, *)
    func snapshotFromRender() -> UIImage? {
        let renderer = UIGraphicsImageRenderer.init(size: self.bounds.size)
        let image = renderer.image {[weak self] (context) in
            
            return self?.layer.render(in: context.cgContext)
        }
        return image
    }
  • 3、CALayer的render方法
   func snapshotFromContext(scale:CGFloat) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(self.bounds.size, false, scale)//UIScreen.main.scale
        guard let ctx = UIGraphicsGetCurrentContext() else { return nil }
        self.layer.render(in: ctx)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
  • 汇总,语法糖
 func snapshotAdapted() -> UIImage? {
        guard self.bounds.size.height > 0 && self.bounds.size.width > 0 else { return nil }
        if #available(iOS 10, *) {
            return snapshotFromRender()
        } else {
            return snapshotFromContext(scale: 0.0)
        }
    }
  • 图层遍历绘制在上下文中绘制image(ImageView的Image或者UIView生成的Image)(待续)

参考

其他基础概念

设备坐标系(CGContext中使用的坐标系)和用户坐标系(UIKit如UIView、CALayer的Frame使用的坐标系)

Image的Size、scale、pixel与显示

坐标系的转换

  • 方法一

    context.scaleBy(x: 1.0, y: -1.0)
    context.translateBy(x: 1.0, y: viewContentBg.bounds.size.height)
    
  • 方法二

    context.rotate(by: CGFloat.pi)
    context.scaleBy(x: -1, y: 1)
    context.translateBy(x: 0, y: CGFloat(-viewContentBg.bounds.size.height))
    

难点和问题

  • 绘制图片设置transfer

相关文章

网友评论

      本文标题:iOS View 转换图片

      本文链接:https://www.haomeiwen.com/subject/tyfykqtx.html