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



我正在尝试动态更改聊天气泡背景。在做了很多研究之后,我认为这是正确的方法,但我认为这对我不起作用。有人能帮我澄清吗?

在我班上名列前茅的是:

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

在类的顶部,您可以将这些声明为常量。

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

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

最新更新