你可以把圖片文件夾中,像這樣(XCODE視口):
它使事情更有條理,但不需要儘可能多的代碼,就像你將它們放在一個.xcasset中一樣。
它可以通過創建一個新的組而不是創建一個。xcasset通過(右鍵點擊消息擴展,然後單擊新建組):
爲StickerBrowserView下面的代碼可以被稱爲像這樣:
import UIKit
import Messages
class StickerBrowserViewController: MSStickerBrowserViewController {
var stickers = [MSSticker]()
func changeBrowserViewBackgroundColor(color: UIColor){
stickerBrowserView.backgroundColor = color
}
func loadStickers(){
createSticker(asset: "1", localizedDescription:"grinning face")
createSticker(asset: "2", localizedDescription:"grimacing face")
createSticker(asset: "3", localizedDescription:"grinning face with smiling eyes")
createSticker(asset: "4", localizedDescription:"face with tears of joy")
createSticker(asset: "5", localizedDescription:"smiling face with open mouth")
createSticker(asset: "6", localizedDescription:"smiling face with open mouth and smiling eyes")
}
func createSticker(asset: String, localizedDescription: String){
guard let stickerPath = Bundle.main.path(forResource:asset, ofType:"png") else {
print("couldn't create the sticker path for", asset)
return
}
// we use URL so, it's possible to use image from network
let stickerURL = URL(fileURLWithPath:stickerPath)
let sticker: MSSticker
do {
try sticker = MSSticker(contentsOfFileURL: stickerURL, localizedDescription: localizedDescription)
// localizedDescription for accessibility
stickers.append(sticker)
}catch {
print(error)
return
}
}
override func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int{
return stickers.count
}
override func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker{
return stickers[index] as MSSticker
}
}
(詩不是我的博客,卻發現它在谷歌和它已經非常有用)
好吧,但看看我的問題的錯誤 - 我如何加載我的資產文件夾的內容與此? – skyguy
對不起,這個新的 – skyguy
在Swift 3中它應該是Bundle.main.url(forResource:String?,withExtension:String?) – azimov