JSQMessageViewController Как получить сообщение bubble rect?

#ios #objective-c #jsqmessagesviewcontroller

#iOS #objective-c #jsqmessagesviewcontroller

Вопрос:

Я использую JSQMessagesViewController для своего приложения для чата. Я хотел бы получить представление о каждом из них messageBubbleImageView .

Я понимаю, что ячейки, включающие в себя, messageBubbleImageView создаются в JSQMessagesViewController.m , и я могу видеть прямоугольник cell.textView.frame и cell.mediaView.frame с помощью NSLog, но я не знаю, как получить прямоугольник @interface ViewController : JSQMessagesViewController из JSQMessagesViewController.m .

Я был бы очень признателен, если кто-нибудь сможет мне помочь в этом отношении.

Ответ №1:

JSQMessagesViewController имеет свойство CollectionView. UICollectionView имеет свойство, называемое visibleCells https://developer.apple.com/reference/uikit/uicollectionview/1618056-visiblecells

Фреймы будут только у видимых ячеек, потому что макет выполняется лениво (на самом деле это своего рода изменения в iOS 10 в качестве оптимизации производительности, но я не думаю, что вам нужно беспокоиться об этом, но если вы посмотрите это:https://developer.apple.com/videos/play/wwdc2016/219 /)

     for cell in collectionView.visibleCells {
        print (cell.frame)
    }
  

Комментарии:

1. В JSQMessagesViewController. могу Ли я получать фреймы в рамках этого процесса «- (UICollectionViewCell *)CollectionView: (JSQMessagesCollectionView *)CollectionView cellForItemAtIndexPath: (NSIndexPath *)indexPath». Однако я не знаю, как получить фреймы в ViewController.m, которые я создал и где отображается фактический вид чата. Как я могу получить информацию о ячейке в этом ViewController?

2. О, теперь я понял, что ты сказал. Я могу достать рамки. Спасибо!