ios – MessageAppExtension:如何将资产中的贴纸图像加载到MSStickerBrowserView?

ios – MessageAppExtension:如何将资产中的贴纸图像加载到MSStickerBrowserView?,第1张

概述好吧,我知道这对每个人都是新的,但我认为这是一个简单的概念 – 我在这里跟随这个做一个自定义贴纸消息应用程序扩展: https://code.tutsplus.com/tutorials/create-an-imessage-app-in-ios-10–cms-26870 我已经完全复制了所有内容,并尝试创建一个基本的MSStickerBrowserView显示(然后使用逻辑进行过滤,但还没有尝试 好吧,我知道这对每个人都是新的,但我认为这是一个简单的概念 – 我在这里跟随这个做一个自定义贴纸消息应用程序扩展:

https://code.tutsplus.com/tutorials/create-an-imessage-app-in-ios-10–cms-26870

我已经完全复制了所有内容,并尝试创建一个基本的MsstickerbrowserVIEw显示(然后使用逻辑进行过滤,但还没有尝试过)我在我的资源文件夹中有贴纸png:

教程没有从它看起来的资产加载,而只是从他们的项目加载,无论他们的代码是旧的如何:

var stickers = [Mssticker]()    func loadStickers() {        for i in 1...2 {            if let url = Bundle.main.urlForResource("Sticker \(i)",withExtension: "png") { //ERROR!!                do {                    let sticker = try Mssticker(contentsOf@R_419_6852@URL: url,localizedDescription: "")                    stickers.append(sticker)                } catch {                    print(error)                }            }        }    }

我收到了错误

Bundle has no member URLforResource

我找不到任何关于此事的内容.如何在应用程序中以编程方式显示我的贴纸?

错误:

这些是我试图加载的图像,无论其名称如何:

解决方法 教程不使用资产目录的原因是,在调用bundle上的urlForResource方法时,无法为放置在.xcassets文件夹中的图像获取有效的@R_419_6852@URL.

您需要单独添加资源,就像您引入应用程序的其他文件一样.在该点上调用bundle上的pathForResource或urlForResource将不再返回nil.

编辑:这是一个函数,它将采用文件夹名称,循环它的内容并返回[Mssticker]?基于它发现的东西

func createStickers(from foldername: String) -> [Mssticker]? {    guard        let path = Bundle.main.resourcePath        else { return nil }    var stickers = [Mssticker]()    let folderPath = "\(path)/\(foldername)"    let folderURL = URL(@R_419_6852@URLWithPath: folderPath)    //get a List of urls in the chosen directory    do {        let imageURLs = try @[email protected](at: folderURL,includingPropertIEsForKeys: nil,options: .skipsHIDden@R_419_6852@s)        //loop through the found urls        for url in imageURLs {            //create the sticker and add it,or handle error            do {                let sticker = try Mssticker(contentsOf@R_419_6852@URL: url,localizedDescription: "yourDescription")                stickers.append(sticker)            } catch let error {                print(error.localizedDescription)            }        }    } catch let error {        print(error.localizedDescription)    }    //return nil if stickers array is empty    return stickers.isEmpty ? nil : stickers}

这应该让你只需要调用它并获得你所追求的:

let stickers = createStickers(from: "YourFoldername")

请注意,不要在文件夹名称的开头包含正斜杠(‘/’).

总结

以上是内存溢出为你收集整理的ios – MessageAppExtension:如何将资产中的贴纸图像加载到MSStickerBrowserView?全部内容,希望文章能够帮你解决ios – MessageAppExtension:如何将资产中的贴纸图像加载到MSStickerBrowserView?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1062771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存