我正在开发一个使用JSQMessagesViewController库的项目。有没有人成功地为打字指示器制作动画,如果可以,他们可以分享他们的方法吗?
谢谢!
答案 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类。
在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()
}
}