代码之家  ›  专栏  ›  技术社区  ›  SRMR

保存条形图视图时不显示条形图

  •  2
  • SRMR  · 技术社区  · 7 年前

    我的图表在我的应用程序中显示良好,但当我保存 chartView UIViewController 这个 .

    在我的应用程序中很好:

    enter image description here

    保存时不会显示条形图 到相机卷或用于其他 :

    enter image description here

    我已经尝试了几种方法来做到这一点-特别是为了节省 图表视图

        let image1 = chartView.getChartImage(transparent: false)
        UIImageWriteToSavedPhotosAlbum(image1!, nil, nil, nil)
    

    enter image description here

    2)

        let image2 = captureScreen()
        UIImageWriteToSavedPhotosAlbum(image2!, nil, nil, nil)
    

    enter image description here

    3)

    extension UIImage {
        convenience init(view: UIView) {
            UIGraphicsBeginImageContext(view.frame.size)
            view.layer.render(in: UIGraphicsGetCurrentContext()!)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
            self.init(cgImage: (image?.cgImage)!)
        }
    }
    
        let image3 = UIImage(view: chartView)
        UIImageWriteToSavedPhotosAlbum(image3, nil, nil, nil)
    

    enter image description here

    1 回复  |  直到 7 年前
        1
  •  1
  •   Zohaib    7 年前

    我在使用getChartImage拍摄图像时也遇到了同样的问题。所以我制作了自己的图像捕捉功能。

    基本上,我创建了一个UIView类并继承了LineChartView。 制作了UIView扩展,用于拍摄我的图表视图的快照。

    在UIView扩展中实现此功能:

    func snapShot() -> UIImage? {
            UIGraphicsBeginImageContextWithOptions(self.frame.size , false, UIScreen.main.scale)
            self.layer.render(in: UIGraphicsGetCurrentContext()!)
            let image = UIGraphicsGetImageFromCurrentImageContext()
            UIGraphicsEndImageContext()
    
            return image
        }
    

    这样称呼它

    let image = chartView.snapShot()