我正在尝试动态更改聊天气泡背景。在做了很多研究之后,我认为这是正确的方法,但我认为这对我不起作用。有人能帮我澄清吗?
在我班上名列前茅的是:
var incomingBubble = JSQMessagesBubbleImageFactory().incomingMessagesBubbleImageWithColor(UIColor(red: 119/255, green: 104/255, blue: 170/255, alpha: 1.0))
let outgoingBubble = JSQMessagesBubbleImageFactory().outgoingMessagesBubbleImageWithColor(UIColor(red: 235/255, green: 63/255, blue: 65/255, alpha: 1.0))
var messages = [JSQMessage]()
我还创建了一个覆盖,我认为可以更改气泡。
override func collectionView(collectionView: JSQMessagesCollectionView!, messageBubbleImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageBubbleImageDataSource! {
let data = messages[indexPath.row]
switch(data.senderId) {
case self.senderId:
return self.outgoingBubble
default:
if(messageStatus == "Some Unique Value") {
return JSQMessagesBubbleImageFactory().incomingMessagesBubbleImageWithColor(UIColor(red: 119/255, green: 204/255, blue: 250/255, alpha: 1.0))
}
return self.incomingBubble
}
}
编辑:将代码更正到一个可行的位置
您显示的方法是委托实现,它旨在让您根据每个气泡更改气泡信息,并且它需要在消息数组中有一个相应的对象。
您需要将所有消息对象都放在一个数组中,然后当它将它们放在屏幕上时,它会检查来自谁,并相应地使用适当的气泡进行响应。如果用户是.senderId,那么它是一个传出的气泡,等等…
您可能缺少的这一部分是,您需要声明self.outgoingBubble
和self.incomingBubble
是什么。
在类的顶部,您可以将这些声明为常量。
let outgoingBubble = JSQMessagesBubbleImageFactory().outgoingMessagesBubbleImageWithColor(UIColor(red: 0.07, green: 0.44, blue: 0.62, alpha: 1.0))
let incomingBubble = JSQMessagesBubbleImageFactory().incomingMessagesBubbleImageWithColor(UIColor(red: 0.87, green: 0.87, blue: 0.90, alpha: 1.0))
或者,您可以在委托方法中自定义它们。