动态更改单个聊天气泡的背景颜色

Change the background color of a single chat bubble dynamically

我正在尝试动态更改聊天气泡背景。经过大量研究后,我认为这是正确的方法,但我认为它不适合我。谁能帮我解决这个问题?

在我的 class 顶部,我有:

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.outgoingBubbleself.incomingBubble 是什么。

在 class 的顶部,您可以将它们声明为常量。

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

或者您可以在委托方法中自定义它们。