发送照片信息时出现了一些错误。
我是一个快速语言的初学者。我想创建关于聊天应用程序的本科项目。我需要一些帮助来解决这个问题。到目前为止,一切都顺利进行,但我面临的一个小错误是,当我收到图像时,它不会出现在屏幕的左侧,传入和传出的图像都出现在屏幕的右侧。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar customToolbar = (Toolbar)findViewById(R.id.toolbarC);
customToolbar.setBackgroundColor(Color.parseColor("#E21836"));
TextView mTitle = (TextView) this.findViewById(R.id.toolbar_title);
mTitle.setText("Hello World");
mTitle.setSingleLine(true);
TextView mSubtitle = (TextView) this.findViewById(R.id.toolbar_subtitle);
mSubtitle.setText("Hello World");
mSubtitle.setSingleLine(true);
}
}
答案 0 :(得分:0)
您只需要了解代码中发生了什么,因为我正在查看您正在重新加载collectionview
的代码,然后才完全配置并添加JSQPhotoMediaItem
或JSQVideoMediaItem
个对象将这些MediaItem放入您的消息数组中,因此请确保已完全配置了JSQPhotoMediaItem
和JSQVideoMediaItem
个对象,然后才将这些对象添加到消息数组中。
您可以将其添加到您的开关案例条件
case "PHOTO":
let photo = JSQPhotoMediaItem(image: nil)
let fileUrl = dict["fileUrl"] as! String
let downloader = SDWebImageDownloader.shared()
downloader.downloadImage(with: URL(string: fileUrl)!, options: [], progress: nil, completed: { (image, data, error, finished) in
DispatchQueue.main.async(execute: {
photo?.image = image // you have image in your media object
if self.senderId == senderId {
photo?.appliesMediaViewMaskAsOutgoing = true
} else {
photo?.appliesMediaViewMaskAsOutgoing = false
}
// you just configured media object by using appliesMediaViewMaskAsOutgoing
self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photo))
// successfully added object into your message array now you should reload collectionview
self.collectionView.reloadData()
})
})
//same goes for your video condition
但我仍然建议你逐一遵循每一步。
按照以下步骤添加A JSQPhotoMediaItem
对象
制作一个JSQPhotoMediaItem
对象,如
let photoItem = JSQPhotoMediaItem(image: UIImage(named: <your Image Object>))
确保您已从服务器下载了图像并成功将图像对象准备好添加到JSQPhotoMediaItem
对象中(当您从firebase下载时)首先获取图像然后将其添加到{{1 }}
现在您必须告诉您的消息类型(传出或传入),因此根据您的需要添加JSQPhotoMediaItem
属性,这样就会出现在您的代码中
appliesMediaViewMaskAsOutgoing
现在这是将此对象附加到数组
的最后一步 if self.senderId == senderId {
photoItem?.appliesMediaViewMaskAsOutgoing = true
} else {
photoItem?.appliesMediaViewMaskAsOutgoing = false
}
现在重新加载collectionView,因为您已成功配置媒体项目( self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photoItem))
)
JSQPhotoMediaItem
self.collectionView.reloadData()
个对象。