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

Posted

技术标签:

【中文标题】通过代码从 xcassets 更改图像的内容【英文标题】:Change content of image from xcassets through code 【发布时间】:2021-01-18 16:25:25 【问题描述】:

我正在尝试从 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
    

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

【问题讨论】:

我认为 Apple 建议您不要在启动屏幕中添加任何启动文本/随机图像。 【参考方案1】:

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

它在 Bundle(.xcassets 资源) 中说你不能向它写入任何文件。所以即使你有它的文档,你也不能写一个URL 的文件。因此,您在保存/写入数据时有两个选择位置:Caches / Documents

【讨论】:

以上是关于通过代码从 xcassets 更改图像的内容的主要内容,如果未能解决你的问题,请参考以下文章

从 Xcode Swift 中 Assets.xcassets 中的文件夹访问图像

使用“Assets.xcassets”中的图像文件以编程方式更改 iOS 应用程序图标

从 Assets.xcassets 加载图像时 iOS 应用程序崩溃

有没有办法在 Xcode 5 或 Xcode 6 中更改 xcassets 视图的背景颜色?

ARKit 图像检测和从 Assets.xcassets 添加图像

从Images.xcassets加载图像