2016-12-12 4 views
0

как мои вопросы уже говорит: Я в настоящее время реализует компонент JSQMessagesViewController в Xamarin.iOS и все отлично работает сейчас, но по некоторым причинам я не могу найти метод heightForCellTopLabelAtIndexPath, как описано в this link. Все другие методы видны мне, даже тот, который возвращает атрибутный текст для метки верхней ячейки.JSQMessagesViewController не может найти heightForCellTopLabelAtIndexPath

Спасибо за помощь!

ответ

0

В в конце я только что использовал GetCellTopLabelAttributedText и изменил его, чтобы он соответствовал моему варианту использования. Другими словами, я центрировал текст, удалял содержимое и менял шрифт. Я отказался от поиска метода, который отсутствовал.

0

Ничего себе, я даже не знал, что вы можете использовать эту библиотеку в приложениях Xamarin, но я ничего не делаю в Xamarin, но это супер круто. Ну по вашему вопросу. Я не был в состоянии видеть, что метод либо так, может быть, документация выключен, но использовать:

override func collectionView(_ collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForMessageBubbleTopLabelAt indexPath: IndexPath!) -> CGFloat { 
    return firstMessageInSet(indexOfMessage: indexPath) ? 0 : kJSQMessagesCollectionViewCellLabelHeightDefault 
} 

Единственное отличие состоит в том, что она ссылается на messageBubbleTopLabel, а не CellTopLabel за слово. Я считаю, что это правильный метод.

В представленном снимке экрана я показываю, как это влияет на внешний вид сообщений. Первое сообщение имеет размер установлен в kJSQMessagesCollectionViewCellLabelHeightDefault и сообщение парование имеет он установлен 0

Screen shot of Dans JSQ implimentation

Так что, если это то, что вы пытаетесь достичь, то это способ для вас. если нет, сообщите мне, и я увижу, есть ли что-то еще, что мы можем сделать.

Не отставайте от хорошей работы.

+0

Привет, Даниэль, большое спасибо за ваш ответ! Я также мог найти метод для messageBubbleTopLabel, но проблема в том, что я хотел бы использовать cellTopLabel для отображения метки времени. У этого есть лучшие функции для этого, поскольку они сосредоточены на экране, и я могу использовать messageBubbletopLabel для имени, как вы предложили. Я просто все еще смущен, как я не могу найти его haha ​​ – Florensvb

0

Я думаю, что вы ищете GetMessageBubbleTopLabelHeight!

Я не знает ни ориентированного документ Xamarin для этой библиотеки, но я с удовольствием дам вам пример использование =)

Это, как я использовал функцию:

public override nfloat GetMessageBubbleTopLabelHeight (MessagesCollectionView collectionView, MessagesCollectionViewFlowLayout collectionViewLayout, NSIndexPath indexPath) 
    { 
     Message message = Messages [indexPath.Row]; 

     if (message.SenderId == Sender.UserId.ToString()) 
      return 0.0f; 

     if (indexPath.Row - 1 >= 0) { 
      Message previousMessage = Messages [indexPath.Row - 1]; 
      if (previousMessage.SenderId == message.SenderId) 
       return 0.0f; 
     } 
     return 20.0f; 
    } 
+0

Если я могу предложить несколько способов сделать ваш ответ более привлекательным: добавьте ссылку на документацию и пример использования –

+0

@QuintinBalsdon Спасибо за совет! – ruifo

+0

Эй, спасибо большое за ответ! К сожалению, это метод, используемый для MessageBubbleTopLabel, а не CellTopLabel. Я могу переопределить GetMessageBubbleTopLabelAttributedText и GetMessageBubbleTopLabelHeight, которые используются для MessageBubbleTopLabel (обычно используется для имени). Я также могу переопределить GetCellTopLabelAttributedText, но то, что мне не хватает, это heightForCellTopLabelAtIndexPath, который используется для показа или не показывать CellTopLabel (который используется для отметки времени в большинстве приложений). – Florensvb