2

私の目標は、JSQMessagesViewController に「ナレーション」メッセージを含めることです。このメッセージを画面の中央に表示したい。メッセージ バブル コンテナー (バブルとテキストを含む) を中央に配置して、メッセージを中央に配置しようとしています。これは私のコードです:

class MessagesViewController: JSQMessagesViewController

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell
        let message = messages[indexPath.row]

        // Sent message
        if message.senderId() == self.senderId {
            // Normal outgoing message

        }
        // Narration Message
        else if message.senderId() == Constants.lbSenderName {
            cell.textView?.textAlignment = NSTextAlignment.Center

            // new frame -- isn't changing the frame.
            let newX = (cell.frame.width - (cell.messageBubbleContainerView?.frame.width)!)/2.0
            cell.messageBubbleContainerView?.frame = CGRectMake(
                newX,
                (cell.messageBubbleContainerView?.frame.minY)!,
                (cell.messageBubbleContainerView?.frame.width)!,
               (cell.messageBubbleContainerView?.frame.height)!
           )
        }
        // Received message
        else {
            // Normal incoming message
        }

        return cell
    }

}

セルは、私が期待するようにまったく移動しません。使ってみました

cell.messageBubbleContainerView?.translatesAutoresizingMaskIntoConstraints = true

でも泡は消えます。私がやっているように手動でレイアウトを変更するか、JSQMessagesViewController を介して使用できる何かを提案していただければ幸いです。

次のようにしたい: ナレーション メッセージ

4

1 に答える 1

1

これは現在、ライブラリではサポートされていません。これらの変更はライブラリによってすぐに上書きされるため、上記のコードは何も変更していません。

現在これを達成したいのは、独自のセル サブクラスを提供することだけです。セルをコレクション ビューに登録してから、incomingおよびoutgoingセル識別子のプロパティを設定できます。

関連ドキュメント: http://cocoadocs.org/docsets/JSQMessagesViewController/7.2.0/Classes/JSQMessagesViewController.html

于 2015-11-07T19:55:32.627 に答える