JSQMessagesViewController动画类型指示器

时间:2015-09-29 21:49:01

标签: jsqmessagesviewcontroller

我正在开发一个使用JSQMessagesViewController库的项目。有没有人成功地为打字指示器制作动画,如果可以,他们可以分享他们的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

我参加晚会但是因为这也花了我很多时间,我的帖子可以帮助别人,所以我会列出我的工作解决方案。 我使用APNG(动画PNG,可能有透明背景)作为输入指示器,所以我使用APNGKit提供名为APNGImageView的UIImageView子类

  • 将Pods / Pods / JSQMessagesViewController / Resources中的JSQMessagesTypingIndicatorFooterView.xib复制到源文件夹,将其重命名为MyMessagesTypingIndicatorFooterView.xib(例如)

  • 像这样创建一个名为MyMessagesTypingIndicatorFooterView的类:

    class MyMessagesTypingIndicatorFooterView: JSQMessagesTypingIndicatorFooterView { @IBOutlet weak var animatedImageView: APNGImageView!

        override func draw(_ rect: CGRect) {
            super.draw(rect)
    
        }
    
        override func awakeFromNib() {
            super.awakeFromNib();
        }
    
        public override class func nib() -> UINib! {
            return UINib(nibName: "MyMessagesTypingIndicatorFooterView", bundle: Bundle.main)
        }
    
        override class func footerReuseIdentifier()->String{
            return "MyMessagesTypingIndicatorFooterView"
        }   
    }
    

    override func draw(_ rect: CGRect) { super.draw(rect) } override func awakeFromNib() { super.awakeFromNib(); } public override class func nib() -> UINib! { return UINib(nibName: "MyMessagesTypingIndicatorFooterView", bundle: Bundle.main) } override class func footerReuseIdentifier()->String{ return "MyMessagesTypingIndicatorFooterView" } }

  • 将APNGImageView实例添加到MyMessagesTypingIndicatorFooterView.xib,引用自定义类MyMessagesTypingIndicatorFooterView。将参考出口animatedImageView添加到MyMessagesTypingIndicatorFooterView类。 enter image description here enter image description here

  • 在JSQMessagesViewController的子类中注册自定义页脚并覆盖viewForSupplementaryElementOfKind

    class MyMessagesViewController: JSQMessagesViewController{ override func viewDidLoad() {
    self.collectionView.register(MyMessagesTypingIndicatorFooterView.nib(), forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "MyMessagesTypingIndicatorFooterView")}

答案 1 :(得分:0)

您需要查看JSQTypingIndicatorFooterView这里是文档。 http://cocoadocs.org/docsets/JSQMessagesViewController/7.2.0/Classes/JSQMessagesTypingIndicatorFooterView.html

您可以设置ellipsisColor

messageBubbleColor它自己的泡泡颜色。

shouldDisplayOnLeft决定它是左侧还是右侧。

collectionView它应该显示的集合视图。

答案 2 :(得分:-1)

我使用了Firebase:



 var userIsTypingRef: FIRDatabaseReference!
    fileprivate var localTyping = false
    var isTyping: Bool {
        get {
            return localTyping
        }
        set {
            localTyping = newValue
            userIsTypingRef.setValue(newValue)
        }
    }




然后将其添加到我的代码库中:



 fileprivate func observeMessages() {
        let messagesQuery = messageRef.queryLimited(toLast: 25)
        messagesQuery.observe(.childAdded) { (snapshot: FIRDataSnapshot!) in
            if let value = snapshot.value as? [String:AnyObject], let id = value["senderId"] as? String, let text = value["text"] as? String {
            self.addMessage(id, text: text)
            self.finishReceivingMessage()
        }
    }