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

图书馆目前不支持此功能。您上面的代码没有更改任何内容,因为这些更改会立即被库覆盖。

目前唯一想要实现的就是提供自己的单元子类。您可以使用集合视图注册您的单元格,然后设置incomingoutgoing单元格标识符属性。

相关文档:http ://cocoadocs.org/docsets/JSQMessagesViewController/7.2.0/Classes/JSQMessagesViewController.html

于 2015-11-07T19:55:32.627 回答