2

私はJSQMessageを使用してSwiftでチャットアプリケーションを作成しています.基本的に私の問題は、ユーザーが写真をタップしたときです.チャットにある写真が欲しい.写真をフルスクリーンでポップしたい.

私がやろうとしていることのステップを追加します。長くなるかもしれませんが、理解しやすいかもしれません。(送信者側のようですが、同じことが有効であるため、画像としての受信者は同じ配列になります)

画像の送信:

let sendMessage = JSQMessage(senderId: senderId, displayName: senderDisplayName, media: photoItem) <- Image I am interested is inside here
self.messages.append(sendMessage)
self.finishSendingMessage()

画面に送信した写真を見ることができて、それをタップして全画面表示にしたいです(古い写真の場合も同様に"didTapMessageBubbleAtIndexPath"ここで使用してprintln(messages[indexPath.row])いるため、ここで JSQMessage オブジェクトを取得しますメッセージが表示され、(最終的にはダンプとして) 私のイメージが含まれていることがわかりますが、取得できません。

私の質問は、この画像を取得してフルスクリーンで表示するにはどうすればよいですか?

前もって感謝します

_isMediaMessage char '\x01' '\x01'
_senderId __NSCFString * "7CjXUi6426" 0x7874b730
_senderDisplayName __NSCFString * "Test3" 0x7874b8b0
_date __NSDate * 2015-07-27 13:28:46 UTC 0x78707d20
_text id 0x0 0x00000000
_media JSQPhotoMediaItem * 0x78725d90 0x78725d90
JSQMediaItem JSQMediaItem

NSObject NSObject

_appliesMediaViewMaskAsOutgoing BOOL YES '\x01'
_cachedPlaceholderView UIView * nil 0x00000000
**_image UIImage * 0x7887de40 0x7887de40**
NSObject NSObject

_imageRef __NSCFType * 0x78e67260 0x78e67260
_scale float 1 1
_traitCollection UITraitCollection * 0x78743a10 0x78743a10
_imageAsset UIImageAsset * nil 0x00000000
_cachedImageView UIImageView * 0x788b61a0 0x788b61a0
4

2 に答える 2

4

誰かがここで回答された同様の質問をしたようです。基本的に、JSQMessageオブジェクトにメディアがアタッチされているかどうかを確認し、それを にキャストして、JSQPhotoMediaItemそこから画像にアクセスできます。

jessesquires's answer の Objective-C コードは次のとおりです。

JSQMessage *message = [messages objectAtIndex:indexPath.row];

if (message.isMediaMessage) {
  id<JSQMessageMediaData> mediaItem = message.media;

  if ([mediaItem isKindOfClass:[JSQPhotoMediaItem class]]) {
    JSQPhotoMediaItem *photoItem = (JSQPhotoMediaItem *)mediaItem;
    UIImage *image = photoItem.image;
    // do stuff with the image
  }
}
于 2015-07-30T23:59:09.653 に答える
0

スイフト3

let message =  self.messages[indexPath.row]
    if message.isMediaMessage == true{
        let mediaItem =  message.media
        if mediaItem is JSQPhotoMediaItem{
            let photoItem = mediaItem as! JSQPhotoMediaItem
             let image:UIImage = photoItem.image //UIImage obtained. 
         }

    }
于 2016-12-15T11:50:43.343 に答える