使用 iOS 个图表将图片保存到相机胶卷
Saving pictures to Camera roll with iOS charts
我试图将我使用 iOS 图表 api 创建的图表保存到相机胶卷。仅存在以下功能:
private func saveButton() {
barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
}
我应该为 "to" 输入哪个值?
试试这个
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)
我不知道相机胶卷的路径是什么,但也许只是改变路径
并且可以工作
最后,我找到了另一个解决方案:
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 中实现,由 PageViewController
调用
您可以使用与图表相同的功能。
let image = chartView.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
上面的答案都是正确的,但是请确保当您执行 运行 保存到相机胶卷的代码时,例如:
let graphImage = myGraph.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(graphImage!, nil, nil, nil)
您已添加 NSPhotoLibraryAddUsageDescription 的要求("Privacy - Photo Library Additions Usage Description",自 iOS 11[=31= 以来,现在 需要]) 和 NSPhotoLibraryUsageDescription(“Privacy - Photo Library Usage Description”) 以及你想向用户显示的字符串文本(解释为什么你需要保存到相机胶卷).
这些要求应该添加到您的 Info.plist 文件中,在您的 Xcode 项目中。
否则,当您 运行 任何将项目保存到相机胶卷的代码时,您的应用程序将会崩溃。
我已附上屏幕截图以显示其外观:
您可以找到有关 Info.plist 要求的更多信息 here。
我试图将我使用 iOS 图表 api 创建的图表保存到相机胶卷。仅存在以下功能:
private func saveButton() {
barChartView.save(to: STRING, format: ChartViewBase.ImageFormat, compressionQuality: Double)
}
我应该为 "to" 输入哪个值?
试试这个
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)
我不知道相机胶卷的路径是什么,但也许只是改变路径 并且可以工作
最后,我找到了另一个解决方案:
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 中实现,由 PageViewController
调用您可以使用与图表相同的功能。
let image = chartView.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
上面的答案都是正确的,但是请确保当您执行 运行 保存到相机胶卷的代码时,例如:
let graphImage = myGraph.getChartImage(transparent: false)
UIImageWriteToSavedPhotosAlbum(graphImage!, nil, nil, nil)
您已添加 NSPhotoLibraryAddUsageDescription 的要求("Privacy - Photo Library Additions Usage Description",自 iOS 11[=31= 以来,现在 需要]) 和 NSPhotoLibraryUsageDescription(“Privacy - Photo Library Usage Description”) 以及你想向用户显示的字符串文本(解释为什么你需要保存到相机胶卷).
这些要求应该添加到您的 Info.plist 文件中,在您的 Xcode 项目中。
否则,当您 运行 任何将项目保存到相机胶卷的代码时,您的应用程序将会崩溃。
我已附上屏幕截图以显示其外观:
您可以找到有关 Info.plist 要求的更多信息 here。