使用iOS图表将图片保存到相机胶卷

问题描述 投票:0回答:4

我尝试将使用iOS Charts api创建的图形保存到相机胶卷。只存在以下功能:

private func saveButton() {
    barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
}

我应该为“到”输入哪个值?

ios swift charts ios-charts
4个回答
1
投票

试试这个

let a = barChartView.save(to: "\(AppDelegate.getAppDelegate().getDocDir())/chart.png", format: BarLineChartViewBase.ImageFormat.png, compressionQuality: 1.0)

您可以为“to”输入的值是保存图表的路径。

在以前的版本中存在2种方法

barChartView.saveToCameraRoll()
barChartView.saveToPath(path: String, format: ChartViewBase.ImageFormat, compressionQuality: Double)

现在只是存在

barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)

我不知道相机胶卷的路径是什么,但也许只是改变路径并且可以工作


4
投票

您可以使用图表使用的相同功能。

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

2
投票

最后,我找到了另一个解决方案

public func saveGraph() {
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, UIScreen.main.scale)
    view.layer.render(in: UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
}

此代码实现在ViewController中,该ViewController由PageViewController调用


0
投票

上面的答案都是正确的,但是请确保在运行保存到相机胶卷的代码时,例如:

    let graphImage = myGraph.getChartImage(transparent: false)
    UIImageWriteToSavedPhotosAlbum(graphImage!, nil, nil, nil)

您已经添加了NSPhotoLibraryAddUsageDescription(“隐私 - 照片库添加使用说明”,现在需要iOS 11)和NSPhotoLibraryUsageDescription(“隐私 - 照片库使用说明”)以及您要显示的字符串文本的要求给用户(解释为什么需要保存到相机胶卷)。

这些要求应该添加到Xcode项目中的Info.plist文件中。

否则,当您运行将项目保存到相机胶卷的任何代码时,您的应用程序将崩溃。

我附上了一个屏幕截图,展示了它的外观:

Info.plist Photo Library Usage Description and Photo Library Additions Usage Description

您可以找到有关Info.plist要求here的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.