2017-01-07 3 views
0

Ich mache eine iMessage App mit Bildern für eine Tastatur App wie benutzerdefinierte Emojis. Ich habe Steckdosen auf meinem iMessage-Storyboard eingerichtet und die Taste angeschlossen. In meinem MessageViewController habe ich den Code unten in meinem IBOulet. Ich möchte das Bild kleiner skalieren, aber ich kann das nicht herausfinden. Jede Hilfe wird sehr geschätzt!Swift - Bildgröße ändern iMessage App

@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) 
} 

Antwort

0

Wenn Sie ein Bild zu Nachrichtenvorlage fügen Sie eine Breite und Höhe verlangen kann, aber es wird das Bild nach oben oder nach unten (unter Beachtung des Seitenverhältnisses) auf eine Größe, die es denkt, ist am besten skalieren.

Wenn das Bild Ressource Sie haben nicht die Größe Sie wollen, können Sie versuchen, ein neues Bild im Speicher zu schaffen, aber MSMessageTemplateLayout wird ändern das, wie es für richtig hält.

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) 

Ich mag diese Erweiterung verwenden, um es ein wenig leichter Arbeit mit CGContext zu machen: https://gist.github.com/mathewsanders/94ed8212587d72684291483905132790

+0

Danke, das ist eine Chance geben gehen ... Ich versuche, eine App wie kimoni zu machen mit benutzerdefinierte "Emojis". Vielleicht gehe ich das falsch an, aber ich denke, ich bin auf dem richtigen Weg. lol Wir werden sehen. –

+0

Sie sollten "MSSticker" anstelle von "MSMessage" verwenden, da dies mehr Flexibilität beim Platzieren von Elementen auf verschiedenen Bildschirmbereichen ermöglicht. Sie können dies in Code erstellen, wenn Sie die Image-Assets zur Laufzeit abrufen müssen, aber wenn Sie alle Teil Ihres Bundles sind, können Sie ein Sticker-Paket erstellen, ohne dass Sie abends Code schreiben müssen! Hier ist ein gutes Tutorial, wenn Sie den Runtime-Ansatz nehmen: http://willowtreeapps.com/blog/imessage-apps-part-one/ – MathewS

+0

Vielen Dank, ich habe es in Aufklebern eingerichtet, aber war gerade nicht genau das, was ich suchte Ich will mehr Kontrolle über das Aussehen. Ich habe das gefunden und es sieht so aus, als ob ich die Pasteboard benutzen sollte, tatsächlich macht mein Code viel kürzer, ich muss mich nur auf das Design konzentrieren und durch die Seiten scrollen. Ich muss nur sicherstellen, dass ich die Bilder klein wie die Emojis bekommen kann. wenn nicht quess, gehe ich die Route, die Sie mit Aufklebern vorgeschlagen haben :-) http://stackoverflow.com/questions/31741015/add-stickers-in-custom-keyboard-extension/37019342#37019342 –