iOS10新特性-自定義iMessage application

上一篇文章分享了最簡單的iMessage application的開發(fā),顯然那個固定的模板是滿足不了我們的需求的,所以本次軍哥分享自定義的iMessage application
本次WWDC大會最大的兩點(diǎn)就是iMessage,所以讓我們來體驗(yàn)一下吧

接下來廢話不多說直接上教程
1.創(chuàng)建工程


選擇

2.工程創(chuàng)建完畢之后你會看到是這個樣子的


如果你想自定義在MessageViewController.swift里面寫

3.在開發(fā)之前先說明MessageExtension文件夾下的文件作用
  1. MessagesViewController.swift : iMessage app的程序入口;
  1. MainInterface.storyboard: 可視化操作;
  2. Assets.xcassets: 圖片集合;
  3. Info.plist : 配置一些擴(kuò)展信息;

4.那么我們開始開發(fā)吧
要想顯示圖片表情,必須要初始化一個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
        // 設(shè)置數(shù)據(jù)源
        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.加載表情包,上面設(shè)置了數(shù)據(jù)源,所以我們要加載圖片(數(shù)據(jù))

// 創(chuàng)建一個MSSticker數(shù)組來存儲我們的表情包
    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方法里面調(diào)用就OK了

override func viewDidLoad() {
        super.viewDidLoad()
        // 初始化本地表情包
        loadStickers()
        // 創(chuàng)建本地表情包控制器
        setupStickerBrowser()
    }

7.接下來實(shí)現(xiàn)MSStickerBrowserViewController數(shù)據(jù)源方法

// MARK: - MSStickerBrowserViewDataSource 必須要實(shí)現(xiàn)的數(shù)據(jù)源方法
extension MessagesViewController: MSStickerBrowserViewDataSource{
    // 一共有多少個
    func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
        return stickers.count
    }
    // 每一個要顯示什么
    func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
        return stickers[index]
    }
}

8.到此大工告成你會看到這樣的界面


趕快去體驗(yàn)一下吧

9.最后軍哥來逐一介紹一下這個類里面的其他方法,會話處理狀態(tài)

  • 1.didReceiveMemoryWarning 當(dāng)發(fā)生內(nèi)存警告的時候調(diào)用
  • 2.willBecomeActive 將要獲取焦點(diǎn)的時候調(diào)用
  • 3.didResignActive 失去焦點(diǎn)
  • 4.didReceive 收到信息
  • 5.didStartSending 開始發(fā)送
  • 6.didCancelSending 取消發(fā)送
  • 7.willTransition 將要過度,可以改變風(fēng)格
  • 8.didTransition 過度完畢

圖片素材下載
github代碼下載
真機(jī)調(diào)試報(bào)錯問題請看我的另一片文章iOS10新特性-最簡單的iMessage application開發(fā)

好了小伙伴們趕快去試試吧
持續(xù)更新實(shí)用的干貨,關(guān)注軍哥請看我的簡書首頁

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末留美,一起剝皮案震驚了整個濱河市伸刃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奕枝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件症歇,死亡現(xiàn)場離奇詭異谭梗,居然都是意外死亡忘晤,警方通過查閱死者的電腦和手機(jī)激捏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來闰蛔,“玉大人,你說我怎么就攤上這事序六。” “怎么了例诀?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拱她。 經(jīng)常有香客問我扔罪,道長秉沼,這世上最難降的妖魔是什么矿酵? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上漠魏,老公的妹妹穿的比我還像新娘。我一直安慰自己柱锹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布壤巷。 她就那樣靜靜地躺著瞧毙,像睡著了一般胧华。 火紅的嫁衣襯著肌膚如雪宙彪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天悲没,我揣著相機(jī)與錄音男图,去河邊找鬼示姿。 笑死,一個胖子當(dāng)著我的面吹牛栈戳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播譬胎,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼命锄,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了脐恩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤驶冒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后崇猫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诅炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年屋厘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汗洒。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡溢谤,死狀恐怖瞻凤,靈堂內(nèi)的尸體忽然破棺而出溯香,到底是詐尸還是另有隱情,我是刑警寧澤玫坛,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站炕吸,受9級特大地震影響伐憾,放射性物質(zhì)發(fā)生泄漏赫模。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一胸嘴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劣像,春花似錦、人聲如沸耳奕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坏挠。三九已至,卻和暖如春降狠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喊熟。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工姐刁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聂使。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像弃理,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子痘昌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,745評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理辆苔,服務(wù)發(fā)現(xiàn)算灸,斷路器驻啤,智...
    卡卡羅2017閱讀 134,628評論 18 139
  • 還記得去年的 WWDC 嗎?當(dāng)人們都在關(guān)注新出來的 Swift3骑冗、SiriKit、User Notificatio...
    GJCode閱讀 1,153評論 0 1
  • 多線程 進(jìn)程和線程的關(guān)系巧涧,舉個形象的例子。360安全衛(wèi)士就是一個進(jìn)程褒侧,QQ是另外一個進(jìn)程。在360中闷供,我們可以同時...
    sunhaiyu閱讀 292評論 0 0
  • 嫩柳如茵 白楊飄雪 榆錢片片真實(shí) 綠林外统诺,景自然幻滅 山連綿歪脏,布滿無數(shù)梨花 杏花香粮呢,煙雨人家 水色縹緲 一幅山水畫...
    饅頭小米粥閱讀 267評論 2 0