300x300, 408x408 618x618 , ( . )..
StickerBrowserView, :
StickerPack, ( ), " " : (2 ), (3 ) (4 ). ! . , , / .

" ", MSStickerBrowserViewController, , / ( ) , 2 . MSStickerBrowserViewController. .
SubclassFile.Swift
import UIKit
import Messages
class MyBrowserVC: MSStickerBrowserViewController {
var stickers = [MSSticker]()
func loadStickers() {
createSticker(asset: "boycott", localizedDescription: "boycottSticker")
createSticker(asset: "alluminaughty", localizedDescription: "alluminaughtySticker")
createSticker(asset: "beer", localizedDescription: "beerSticker")
}
func createSticker(asset: String, localizedDescription: String) {
guard let stickerPath = Bundle.main.path(forResource: asset, ofType: "png") else {
print("Couldn't create sticker path for", asset)
return
}
let stickerURL = URL(fileURLWithPath: stickerPath)
let sticker: MSSticker
do {
try sticker = MSSticker(contentsOfFileURL: stickerURL,
localizedDescription: localizedDescription)
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]
}
}
MessagesViewController ( ) BrowserVC , , browserVC, .
MessageViewController.swift
import UIKit
import Messages
class MessagesViewController: MSMessagesAppViewController {
var browserVC: MyBrowserVC!
override func viewDidLoad() {
super.viewDidLoad()
browserVC = MyBrowserVC(stickerSize: .regular)
browserVC.view.frame = self.view.frame
self.addChild(browserVC)
browserVC.didMove(toParent: self)
self.view.addSubview(browserVC.view)
browserVC.loadStickers()
browserVC.stickerBrowserView.reloadData()
}
}
WWDC, ! , !