Импорт изображений размером 300 x 300, 408 x 408 или 618 x 618 повлияет ТОЛЬКО на размер стикера, отображаемого в беседе (при отправке в качестве начального сообщения или перетаскивании в существующее всплывающее сообщение). Изменение размеров ваших изображений НЕ повлияет на их ориентацию в макете сетки. .
Чтобы изменить макет сетки в StickerBrowserView, вы можете сделать это одним из двух способов:
Нажмите на папку StickerPack, чтобы она была выделена (или выберите любую наклейку из вашего пакета), а затем вы можете изменить параметр «Размер наклейки» в раскрывающемся меню в инспекторе атрибутов справа на предпочитаемый стиль презентации: маленький (2 столбца), средний (3 столбца) или большой (4 столбца). Это все! Это изменит каждую наклейку, чтобы она отображалась таким образом в макете. Независимо от того, в каком размере вы импортируете свои изображения, ваше приложение будет уменьшать или увеличивать их до правильных размеров для использования в выбранном макете.
![Изменить размер стикера в конструкторе интерфейсов](https://i.stack.imgur.com/j0wtg.png)
Сначала настройте новый проект как «приложение для обмена сообщениями», затем создайте новый файл для подкласса MSStickerBrowserViewController, создайте массив для хранения стикеров, загрузите/создайте стикеры (при сохранении каждого в массиве стикеров) и убедитесь, что реализованы 2 необходимых методы источника данных MSStickerBrowserViewController. Для этого вы можете просто перетащить свои изображения в каталог Extensions.
ПодклассФайл.Swift
import UIKit
import Messages
class MyBrowserVC: MSStickerBrowserViewController {
//create stickers array
var stickers = [MSSticker]()
//load assets into stickers array
func loadStickers() {
createSticker(asset: "boycott", localizedDescription: "boycottSticker")
createSticker(asset: "alluminaughty", localizedDescription: "alluminaughtySticker")
createSticker(asset: "beer", localizedDescription: "beerSticker")
}
//func to create sticker
func createSticker(asset: String, localizedDescription: String) {
//create url from assets in main bundle
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
//create sticker from path(and localized description) and add to array
do {
try sticker = MSSticker(contentsOfFileURL: stickerURL,
localizedDescription: localizedDescription)
stickers.append(sticker)
} catch {
print(error)
return
}
}
//datasource methods
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 {
//create BrowserVC instance of Subclass
var browserVC: MyBrowserVC!
override func viewDidLoad() {
super.viewDidLoad()
//the next line of code is where you can adjust the "grid layout"
//your options are: .small(2 columns), .regular(3 columns), or .large(4 columns)
//instantiate browserVC with sticker size and set frame
browserVC = MyBrowserVC(stickerSize: .regular)
browserVC.view.frame = self.view.frame
//send browserVC to front
self.addChild(browserVC)
browserVC.didMove(toParent: self)
self.view.addSubview(browserVC.view)
//load stickers onto the browser view
browserVC.loadStickers()
browserVC.stickerBrowserView.reloadData()
}
}
Для получения дополнительной информации ознакомьтесь с видео WWDC, выпущенным в прошлом году на стикерах! Здесь я начал учиться создавать стикеры, а затем добрался до документации!
person
Jake Dobson
schedule
08.06.2017