Je crée une extension iMessage qui implique que les utilisateurs se transmettent des images les unes aux autres. Ils doivent à la fois pouvoir accéder aux images qu'ils reçoivent les uns des autres et les utiliser de leur propre chef. Par exemple, si USER 1 envoie une image d'un chiot à USER 2, la propriété d'image de la disposition des messages sera celle du chiot. L'UTILISATEUR 2 devrait alors être capable de toucher ce message, et le chiot se chargera dans une vue d'image à l'écran. Jusqu'à présent, je ne sais pas comment je ferais cela.Comment puis-je accéder à l'image à partir de la mise en page MSMessage sur la fin de l'utilisateur de réception?
Voici où je définis l'image mise en page à celle d'un chiot.
@IBAction func sendPicturePressed(_ sender: AnyObject) {
if chosenImage.image != nil {
let session = MSSession()
let message = MSMessage(session: session)
let conversation = self.activeConversation
let components = URLComponents()
let layout = MSMessageTemplateLayout()
let image = chosenImage.image
layout.image = image
message.layout = layout
message.url = components.url!
conversation?.insert(message, completionHandler: { (error) in
self.dismiss()
})
}
}
Maintenant, lorsque le deuxième utilisateur tape le chiot, je veux définir une vue de l'image sur leur écran pour le chiot. Pas exactement comment, mais ce que je voudrais faire est:
override func willBecomeActive(with conversation: MSConversation) {
imageView.image = conversation.selectedMessage.layout.image
//There is no image property to access this like I've provided, that's just what I'm trying to accomplish.
}
C'est génial! En fait, le fichier est déjà accessible dans layout.mediaFileURL, il suffit donc de copier. Est-ce documenté n'importe où? message.layout est un objet MSMessageLayout sans membres accessibles, ce qui est un peu inquiétant car il doit être converti en MSMessageTemplateLayout. – user1055568
Ahh, mais juste réalisé, comme vous l'avez dit, cela ne fonctionne que pour les messages qui arrivent quand l'extension est active. Bummer. Vous ne savez pas pourquoi Apple rend ces données indisponibles. – user1055568