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 @R_419_6852@Manager.default.contentsOfDirectory(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?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)