Swift — изменение размера изображения в приложении iMessage

Я делаю приложение iMessage с изображениями для клавиатурного приложения, такого как пользовательские смайлики. Я настроил розетки на доске объявлений iMessage и подключил кнопку. В моем MessageViewController у меня есть код ниже в моем IBOulet. Я хочу уменьшить размер изображения, но я не могу понять это. Любая помощь приветствуется!

@IBAction func button(_ sender: Any) { 
    label.text = "button pressed"
    let layout = MSMessageTemplateLayout()
    layout.image = UIImage(named: "270a.png")
    let message = MSMessage()
    message.layout = layout
    activeConversation?.insert(message, completionHandler: nil) 
}

person Matthew Montanez    schedule 07.01.2017    source источник


Ответы (1)


Когда вы добавляете изображение в шаблон сообщения, вы можете запросить ширину и высоту, но оно будет масштабировать изображение вверх или вниз (с учетом соотношения сторон) до размера, который он считает лучшим.

Если у вас есть ресурс изображения не того размера, который вам нужен, вы можете попытаться создать новое изображение в памяти, но MSMessageTemplateLayout изменит его по своему усмотрению.

let original = UIImage(named: "background")

// use CGContext to create new image in memory
// 10 x 10 is super small, so messages app will scale this up
let image = CGSize(width: 10, height: 10).image { context, frame in

    original?.draw(in: frame, blendMode: .luminosity, alpha: 1)
}

let message = MSMessage()
let layout = MSMessageTemplateLayout()

layout.image = image
message.layout = layout

self.activeConversation?.insert(message, completionHandler: nil)

Мне нравится использовать это расширение, чтобы упростить работу с CGContext: https://gist.github.com/mathewsanders/94ed8212587d72684291483905132790

person MathewS    schedule 07.01.2017
comment
Спасибо, попробую... Я пытаюсь сделать приложение вроде кимони, используя собственные смайлики. может быть, я занимаюсь этим неправильно, но я думаю, что я на правильном пути. лол посмотрим. - person Matthew Montanez; 07.01.2017
comment
Возможно, вы захотите использовать MSSticker, а не MSMessage, потому что это обеспечивает большую гибкость при размещении ресурсов в разных частях экрана. Вы можете создать это в коде, если вам нужно получить ресурсы изображения во время выполнения, но если вы все являетесь частью своего пакета, вы можете создать набор наклеек, не написав вечером никакого кода! Вот хорошее руководство, если вы выберете подход во время выполнения: willowtreeapps.com/blog/imessage- приложения-часть-1 - person MathewS; 07.01.2017
comment
Спасибо, я настроил его в виде наклеек, но это не совсем то, что я искал, я хочу больше контролировать внешний вид. В итоге я нашел это, и похоже, что я должен использовать монтажный стол, на самом деле мой код намного короче, просто нужно сосредоточиться на дизайне и прокрутке страниц. просто нужно убедиться, что я могу сделать картинки маленькими, как смайлики. если нет, я пойду по предложенному вами маршруту с наклейками :-) ="добавить наклейки в пользовательское расширение клавиатуры"> stackoverflow.com/questions/31741015/ - person Matthew Montanez; 07.01.2017