我的iMessage扩展程序当前正在基于文本输入生成图像,并将它们作为MSStickerView中的贴纸呈现给用户。用户可以通过滑块操纵贴纸的大小。 为此,我缩放生成的图像,添加贴纸,然后使用sizeToFit()调整MSStickerView的大小。
问题是StickerView和Sticker只显示尺寸减小,但仅在切换扩展视图时增加(大到小或反之亦然)。 我知道该视图使用缓存图像,这就是为什么我使用基于文本输入和大小的名称保存我的图像的原因。但是,我期待使用其他一些缓存系统,这使我无法使用更大的图像。
我是否有办法以编程方式触发类似于切换视图时发生的重新加载或仅手动调整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)
用户界面的图片: