Как масштабировать MSStickerView до размера MSSticker?
Мое расширение iMessage в настоящее время генерирует изображения на основе ввода текста и представляет их пользователю в виде стикеров в MSStickerView. Пользователь может манипулировать размером стикера с помощью ползунка. Для этого я масштабирую сгенерированное изображение, добавляю стикер, а затем изменяю размер MSStickerView с помощью sizeToFit().
Проблема заключается в том, что отображаемые StickerView и Sticker только уменьшаются в размере, но увеличиваются только при переключении вида Extension (с большого на маленький или наоборот). Я знаю, что представление использует кэшированные изображения, поэтому я сохраняю свои изображения с именами, основанными на вводе текста и размере. Тем не менее, я ожидаю, что используется какая-то другая система кэширования, которая не позволяет мне использовать большие изображения.
Есть ли способ для меня программно вызвать перезагрузку, аналогичную той, которая происходит при переключении представлений, или просто изменить размер MSStickerView вручную?
func createSticker(_ sender: Any) {
deleteStoredImage(fileName: lastFileName)
// generate a Sticker from the text in the UITextField
var inputText = " "
inputText = textInput.text!
if(inputText.characters.count == 0){
inputText = " "
}
var stickerImage = inputText.image()
stickerImage = resizeImage(image: stickerImage!, targetHeight: CGFloat(sizeSlider.value*150))
// create a unique filename from text+size
let filename = inputText+String(sizeSlider.value)+"Sticker.png"
lastFileName = filename
print("attempting to write file: " + filename)
storeImage(img: stickerImage!, fileName: filename)
// load the recently stored image into an MSSticker
var textSticker: MSSticker!
let url = getDocumentsDirectory().appendingPathComponent(filename)
do {
textSticker = try MSSticker(contentsOfFileURL: url, localizedDescription: "")
} catch {
print(error)
}
// display the sticker in the stickerView and resize/ move it accordingly
stickerView.sticker = textSticker
stickerView.sizeToFit()
stickerView.center = CGPoint(x: stickerContainer.center.x, y: stickerContainer.center.y*0.6)
Изображение пользовательского интерфейса: