JSQMessagesViewController (一)
来源:互联网 发布:淘宝店关键词优化 编辑:程序博客网 时间:2024/06/06 07:07
集成JSQMessagesViewController
Demo下载
如果inputToolbar
被键盘遮住了 看这里
第一步
导入
JSQMessagesViewController
库
使用cocoapods导入pod 'JSQMessagesViewController'
(或者直接从Github下载)
第二步
包含头文件
由于本人用的是swift语言, 所以不能直接包含头文件, 因此创建一个桥接头文件, 这里命名为briding-Header.h
在该头文件中需要包含JSQMessagesViewController头文件, 如下:
#import <JSQMessagesViewController/JSQMessages.h>
然后在TARGETS -> Build Setting -> Objective-C Bridging Header
中输入桥头文件的路径(该路径要和桥接头文件所在的目录一致), 如图:
第三步
一. 引入头文件(如果 import 没有提示或者报错, 参考这里)
import JSQMessagesViewController
二. 继承JSQMessagesViewController
import UIKitimport JSQMessagesViewControllerclass MessageViewController: JSQMessagesViewController { /// 自己的气泡颜色 let outgoingBubble = JSQMessagesBubbleImageFactory().outgoingMessagesBubbleImageWithColor(UIColor.jsq_messageBubbleGreenColor()) /// 别人的气泡颜色 let incomingBubble = JSQMessagesBubbleImageFactory().incomingMessagesBubbleImageWithColor(UIColor.jsq_messageBubbleBlueColor()) /// 数据源(消息) var datasource: [JSQMessage] = [] override func viewDidLoad() { super.viewDidLoad() title = "与xxx聊天" //navigation标题 senderId = "111111" //发送人ID senderDisplayName = "Chakery" //发送人名字 showLoadEarlierMessagesHeader = false //是否显示聊天记录(顶部的查看聊天记录) // 注意: // 如果重载了[Will/Did][Appear/Disappear]之类的方法 // 一定要调用父类的方法 super // 否则inputToolbar不能跟随键盘移动 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) collectionView?.collectionViewLayout.springinessEnabled=true } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() }}//MARK: inputToolbarextension MessageViewController { //发送按钮 override func didPressSendButton(button: UIButton!, withMessageText text: String!, senderId: String!, senderDisplayName: String!, date: NSDate!) { JSQSystemSoundPlayer.jsq_playMessageSentSound() //发送消息的声音 // 这里只是模拟消息, 仅供参考 let message: JSQMessage = JSQMessage(senderId: senderId, senderDisplayName: senderDisplayName, date: date, text: text) let message2: JSQMessage = JSQMessage(senderId: "222222", senderDisplayName: "老王", date: date, text: "听不懂你说什么") datasource.append(message) datasource.append(message2) self.finishSendingMessageAnimated(true) } //附件按钮 override func didPressAccessoryButton(sender: UIButton!) { // do some... }}//MARK: collectionView - delegate datasourceextension MessageViewController { //消息 override func collectionView(collectionView: JSQMessagesCollectionView!, messageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageData! { return self.datasource[indexPath.item] } //item数 override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.datasource.count } //气泡颜色 override func collectionView(collectionView: JSQMessagesCollectionView!, messageBubbleImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageBubbleImageDataSource! { if datasource[indexPath.item].senderId == senderId { return outgoingBubble } return incomingBubble } //头像 override func collectionView(collectionView: JSQMessagesCollectionView!, avatarImageDataForItemAtIndexPath indexPath: NSIndexPath!) -> JSQMessageAvatarImageDataSource! { let image = UIImage(named: "111") //图片 let diameter = UInt(collectionView.collectionViewLayout.outgoingAvatarViewSize.width) //直径 let avatarImage = JSQMessagesAvatarImageFactory.avatarImageWithImage(image, diameter: diameter) return avatarImage } //cell override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { let cell = super.collectionView(collectionView, cellForItemAtIndexPath: indexPath) as! JSQMessagesCollectionViewCell //如果不是媒体信息 if !datasource[indexPath.item].isMediaMessage { //如果是本人发的消息 if datasource[indexPath.item].senderId == self.senderId { cell.textView?.textColor = UIColor.whiteColor() } else { cell.textView?.textColor = UIColor.darkGrayColor() } } return cell }}
0 0
- JSQMessagesViewController (一)
- iOS开源项目学习——JSQMessagesViewController
- 用 JSQMessagesViewController 创建一个 iOS 聊天 App - 第 1 部分
- 用 JSQMessagesViewController 创建一个 iOS 聊天 App - 第 2 部分
- 用 JSQMessagesViewController 创建一个 iOS 聊天 App - 第 3 部分
- 一
- 《一》
- 一
- 一
- 一...
- 一
- 一
- (一)
- 一
- 一。
- (一)
- 一
- 一
- Red Hat 和Cent OS 低版本安装mysql
- fragment
- 开源日志系统比较:scribe、chukwa、kafka、flume
- EJB invocations from a remote client using JNDI
- 使用DES方式,加、解密字符
- JSQMessagesViewController (一)
- linux系统shell语法简介-49
- C++语言学习资料大全分享 想要的速度下
- Nine-Patch格式图片浅析
- linux中的一些小技巧
- 公钥和私钥的使用机制
- 域名记录类型介绍(A记录、MX记录、NS记录等)
- opencv图像处理开发
- 归档(archive)文件(一)