2016-04-03 3 views
0

Я пытаюсь динамически менять цвет фона чата. После долгих исследований я подумал, что это правильный подход, но я не работаю для меня. Может ли кто-нибудь прояснить это для меня?Динамическое изменение цвета фона для одного чата для чата

В верхней части моего класса у меня есть:

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

Edit: Корректировка кода работоспособного место

ответ

0

Метод, который вы показываете является реализацией делегата, который предназначен, чтобы позволить вам изменить информацию пузыря на основе каждого пузырька, и она должна иметь соответствующий объект в массиве сообщений.

Вы должны иметь все объекты сообщения в одном массиве, а затем, когда он помещает их на экран, он проверяет, кто из них и отвечает соответствующим пузырем соответственно. Если пользователь является .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)) 

Или вы можете настроить их внутри метода делегата.

+0

ИсходящиеBubble и входящиеBubble являются глобальными настройками, и я надеялся просто изменить один пузырь в реализации делегата. Я думал, что эта строка будет способна изменить пузырь self.incomingBubble.messageBubbleImage.jsq_imageMaskedWithColor (UIColor (красный: 119/255, зеленый: 204/255, синий: 250/255, alpha: 1.0)) – Neil

+0

Вам необходимо вернуть отдельный, вместо того, чтобы модифицировать глобальный – bolnad

+0

Это сделало трюк, спасибо. Редактирование моего кода, чтобы он работал. – Neil

Смежные вопросы