通过代码更改 xcassets 中的图像内容

问题描述

我正在尝试从 xcassets 更新图像的内容(通过代码,因为我应该下载新图像) 我需要这个,所以我可以尝试动态更新初始屏幕图像和主页图像(两者都从 xcassets 中的同一个文件中引用)。 这是因为启动画面只能引用本地呈现的图像。

我尝试了以下方法,但不起作用。任何帮助表示赞赏。

    var urlString = Bundle.main.resourcePath
    
    let documentsURL = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).first!
    let filename = URL(fileURLWithPath: urlString!)
    let fileURL = filename.appendingPathComponent("image_splashscreen@3x.png")
    if let pngImageData = image.pngData() {
    try! pngImageData.write(to: fileURL,options: .atomic)

还有:

    var documentsUrlw: URL {
        return FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).first!
    }

    let fileName = "image_splashscreen@3x"
    let fileURL = documentsUrl.appendingPathComponent(fileName)
    if let imageData = image.jpegData(compressionQuality: 1.0) {
       try? imageData.write(to: fileURL,options: .atomic)
       return fileName // ----> Save fileName
    }

在这两种情况下,图像都不会更新。

解决方法

看到这个问题后,我搜索了一些类似的问题。例如这个:question

它说在 Bundle(.xcassets resources) 中不能写入任何文件。因此,即使您有文档,也不能将文件写入 URL。因此,您在保存/写入数据时有两个选项:Caches / Documents

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...