上一篇文章分享了最简单的iMessage application的开发,显然那个固定的模板是满足不了我们的需求的,所以本次军哥分享自定义的iMessage application
本次WWDC大会最大的两点就是iMessage,所以让我们来体验一下吧
接下来废话不多说直接上教程
1.创建工程
选择
2.工程创建完毕之后你会看到是这个样子的
如果你想自定义在MessageViewController.swift里面写
3.在开发之前先说明MessageExtension文件夹下的文件作用
- MessagesViewController.swift : iMessage app的程序入口;
- MainInterface.storyboard: 可视化操作;
- Assets.xcassets: 图片集合;
- Info.plist : 配置一些扩展信息;
4.那么我们开始开发吧
要想显示图片表情,必须要初始化一个MSStickerBrowserViewController作为根视图,代码如下
// 初始化一个MSStickerBrowserViewController作为根视图
private func setupStickerBrowser() {
/*
case small 小图模式
case regular 中图
case large 大图
}
*/
let controller = MSStickerBrowserViewController(stickerSize: .small)
addChildViewController(controller)
view.addSubview(controller.view)
// 语法变了
controller.stickerBrowserView.backgroundColor = UIColor.yellow
// 设置数据源
controller.stickerBrowserView.dataSource = self
// 布局
view.topAnchor.constraint(equalTo: controller.view.topAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: controller.view.bottomAnchor).isActive = true
view.leftAnchor.constraint(equalTo: controller.view.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: controller.view.rightAnchor).isActive = true
}
5.加载表情包,上面设置了数据源,所以我们要加载图片(数据)
// 创建一个MSSticker数组来存储我们的表情包
var stickers = [MSSticker]()
private func loadStickers() {
for i in 1...31 {
// 语法变了
let str = String(format: "%02d", i)
print(str)
if let url = Bundle.main.url(forResource: str, withExtension: "gif") {
do {
let sticker = try MSSticker(contentsOfFileURL: url, localizedDescription: "")
stickers.append(sticker)
} catch {
print(error)
}
}
}
}
6.接下来在viewDidLoad方法里面调用就OK了
override func viewDidLoad() {
super.viewDidLoad()
// 初始化本地表情包
loadStickers()
// 创建本地表情包控制器
setupStickerBrowser()
}
7.接下来实现MSStickerBrowserViewController数据源方法
// MARK: - MSStickerBrowserViewDataSource 必须要实现的数据源方法
extension MessagesViewController: MSStickerBrowserViewDataSource{
// 一共有多少个
func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
return stickers.count
}
// 每一个要显示什么
func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
return stickers[index]
}
}
8.到此大工告成你会看到这样的界面
赶快去体验一下吧
9.最后军哥来逐一介绍一下这个类里面的其他方法,会话处理状态
- 1.didReceiveMemoryWarning 当发生内存警告的时候调用
- 2.willBecomeActive 将要获取焦点的时候调用
- 3.didResignActive 失去焦点
- 4.didReceive 收到信息
- 5.didStartSending 开始发送
- 6.didCancelSending 取消发送
- 7.willTransition 将要过度,可以改变风格
- 8.didTransition 过度完毕
图片素材下载
github代码下载
真机调试报错问题请看我的另一片文章iOS10新特性-最简单的iMessage application开发
好了小伙伴们赶快去试试吧
持续更新实用的干货,关注军哥请看我的简书首页
网友评论