动态更改单个聊天气泡的背景颜色
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.outgoingBubble
和 self.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))
或者您可以在委托方法中自定义它们。
我正在尝试动态更改聊天气泡背景。经过大量研究后,我认为这是正确的方法,但我认为它不适合我。谁能帮我解决这个问题?
在我的 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.outgoingBubble
和 self.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))
或者您可以在委托方法中自定义它们。