みんな、みんなSwiftのmsステッカーに慣れていますが、msstickerとmsstickerviewの目的/違いを理解しようとしています。私はここでAPIをhttps://developer.apple.com/reference/messages/msstickerview/1648434-stickerと読んでいますが、この比較的簡単な問題の答えを見つけることはできません。MSStickerBrowserViewにMSSticker(StickerViewsではなく)を追加するだけで、表示できる唯一の方法です。しかし、私は実装しようとしているカスタムのステッカービュークラスを持っているので、私はStickerVIEWSを追加する必要があります。ステッカーのVIEWSをブラウザビューに素早く追加するには?
私のステッカーはここに私のブラウザビューに追加されます。
func loadStickers() {
var url: URL?
var i = 1
while true {
url = Bundle.main.url(forResource: "test\(i)", withExtension: "png") //change test for packs
print("URL IS THIS: \(url)")
guard let url = url else { break }
//make it a sticker
let sticker = try! MSSticker(contentsOfFileURL: url, localizedDescription: "")
let stickerView = InstrumentedStickerView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
stickerView.sticker = sticker
stickerView.delegate = self
stickerViews.append(stickerView)
stickers.append(sticker)
i += 1
}
}
func createStickerBrowser() {
let controller = MSStickerBrowserViewController(stickerSize: .regular)
addChildViewController(controller)
view.addSubview(controller.view)
controller.stickerBrowserView.backgroundColor = UIColor.white
controller.stickerBrowserView.dataSource = self
//resize this programmatically later
view.topAnchor.constraint(equalTo: controller.view.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: controller.view.bottomAnchor).isActive = true
view.leftAnchor.constraint(equalTo: controller.view.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: controller.view.rightAnchor).isActive = true
}
あなたが見ることができるように、私はステッカーや各ステッカーのためのステッカービューの両方を作成しています - 私のステッカーはstickers
アレイとステッカーに格納されていますビューにstickerViews
配列。私はStickerViewに、これらのメソッドに戻り値の型を変更し、代わりに
func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSStickerView {
return stickerViews[index] //this isnt displaying stickerveiws only stickers
}
しかし、これは次のように私を取得stickerViewの配列を返す試してみました
func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
return stickers.count
}
func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
return stickers[index] //this isnt displaying stickerveiws only stickers
}
:ここ
は、ブラウザが移入され方法ですエラー:
messagesviewcontroller does not conform to protocol msstickerbrowserviewdatasource
必要な機能以前と同じように実装されていません。ステッカーの表示方法は?私は間違って何をしていますか?
ありがとう、どうやってuicollectionviewを構築できますか?それを経験したことはありますか?コンセプト – skyguy
に新しくなったのは、テーブルビューと非常によく似ています。そこにたくさんの例があります:https://www.raywenderlich.com/136159/uicollectionview-tutorial-getting-started – BJHStudios