前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS10新特性-自定义iMessage application

iOS10新特性-自定义iMessage application

作者头像
czjwarrior
发布2018-05-28 11:04:25
6050
发布2018-05-28 11:04:25
举报
文章被收录于专栏:岑志军的专栏岑志军的专栏

1、创建工程

2、工程创建完成后的目录结构

###3、接下来开始写代码

代码语言:javascript
复制
//
//  MessagesViewController.swift
//  MessagesExtension
//
//  Created by 岑志军 on 2016/9/28.
//  Copyright © 2016年 cen. All rights reserved.
//


/*
 虽然没有严格限制,但是苹果建议的表情文件大小:
 1. Small: 100 x 100 pt @3x scale (300 x 300 pixel image)
 2. Medium: 136 x 136 pt @3x scale (378 x 378 pixel image)
 3. Large: 206 x 206 pt @3x scale (618 x 618 pixel image)

 表情包的大小:
 1. 文件中images不可以大于500kb;
 2. iamge不可以小于100 x 100 pt (300 x 300 pixels).
 3. iamge不可以大于206 x 206 pt (618 x 618 pixels).
 4. 图片格式必须是 PNG, APNG, JPEG, GIF ;


 MessageExtension文件
 1. MessagesViewController.swift : iMessage app的程序入口;
 2. MainInterface.storyboard: 可视化操作;
 3. Assets.xcassets: 图片集合;
 4. Info.plist : 配置一些扩展信息;
 */

import UIKit
import Messages

class MessagesViewController: MSMessagesAppViewController {


    // 创建一个MSSticker数组来存储我们的表情包
    var stickers = [MSSticker]()

    /*
     case small 小图模式
     case regular 中图
     case large   大图
     */
     // 要想显示图片表情,必须要初始化一个MSStickerBrowserViewController作为根视图,代码如下
    private func setupStickerBrowser() {
        let controller = MSStickerBrowserViewController(stickerSize: .small)

        addChildViewController(controller)
        view.addSubview(controller.view)

        // 设置数据源
        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.加载表情包,上面设置了数据源,所以我们要加载图片(数据)
    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)
                }

            }

        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // 初始化本地表情包
        loadStickers()
        // 创建本地表情包控制器
        setupStickerBrowser()
    }
}

// 实现MSStickerBrowserViewController数据源方法
extension MessagesViewController: MSStickerBrowserViewDataSource{
    // 一共有多少个
    func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
        return stickers.count
    }

    // 每一个要显示什么
    func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker {
        return stickers[index]
    }
}

最后大功告成:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、创建工程
  • 2、工程创建完成后的目录结构
  • 最后大功告成:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档