iOS10中Messages独立应用与扩展插件详析(三)

简介: iOS10中Messages独立应用与扩展插件详析

7.表情贴图类MSSticker与MSStickerView


       在制作表情包Sticker Picks的时候,开发者不需要编写一行代码,实际上如果要通过代码来开发表情包也是没有问题的,这里需要用到的一个类就是MSSticker类,简单理解,MSSticker类对象就是一个表情贴图,但是它不是一个View视图,若想在Messages App中看到这个表情贴图,还需要借助一个类MSStickerView,MSStickerView是用于承载表情贴图的视图类,用户选中它后,可以在Messages应用中进行发送。


       首先,MSSticker类创建方法如下:


//初始化方法 通过文件URL 来创建实例

- (nullable instancetype)initWithContentsOfFileURL:(NSURL *)fileURL localizedDescription:(NSString *)localizedDescription error:(NSError * _Nullable *)error NS_DESIGNATED_INITIALIZER;

MSStickerView类解析如下:


//通过MSSticker来进行MSStickerView类的创建

- (instancetype)initWithFrame:(CGRect)frame sticker:(nullable MSSticker *)sticker;


//获取动画播放一遍的时间 如果是gif

@property(nonatomic, readonly) NSTimeInterval animationDuration;

//开始动画

-(void) startAnimating;

//结束动画

-(void) stopAnimating;

//获取动画状态

- (BOOL)isAnimating;

需要注意,MSStickerView如果加载的是gif类型的表情贴图,默认不会播放动画,开发者可以调用开始动画的方法来进行gif动画的播放。


8.表情包视图控制器MSStickerBrowserViewController


       其实通过前面的内容,已经可以自定义开发一个表情包Messages App了,但是还有一个视图控制器类MSStickerBrowserViewController,这个类可以更加简单方面的创建表情包视图控制器。要了解MSStickerBrowserViewController类,首先应该先了解MSStickerBrowserView类,这两个类的关系十分类似于UITableViewController与UITableView类的关系。MSStickerBrowserView是用于展示表情视图的容器,其继承自UIView,但却和UICollectionView十分类似,其中方法解析如下:


//初始化方法 设置frame 和其中表情视图的尺寸模式

/*

typedef NS_ENUM(NSInteger, MSStickerSize) {

   //小尺寸

   MSStickerSizeSmall,

   //标准尺寸

   MSStickerSizeRegular,

   //大尺寸

   MSStickerSizeLarge

} NS_ENUM_AVAILABLE_IOS(10_0);

*/

- (instancetype)initWithFrame:(CGRect)frame stickerSize:(MSStickerSize)stickerSize NS_DESIGNATED_INITIALIZER;

//数据源代理

@property (nonatomic, weak, nullable) id <MSStickerBrowserViewDataSource> dataSource;

//当前的滑动位置

@property (nonatomic, assign, readwrite) CGPoint contentOffset;

//内容偏移尺寸

@property (nonatomic, assign, readwrite) UIEdgeInsets contentInset;

//设置当前的滑动位置

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;

//刷新数据

- (void)reloadData;

MSStickerBrowserView的数据填充需要在代理方法中实现,如下:


//设置表情贴图个数

- (NSInteger)numberOfStickersInStickerBrowserView:(MSStickerBrowserView *)stickerBrowserView;

//设置具体每个位置的表情贴图

- (MSSticker *)stickerBrowserView:(MSStickerBrowserView *)stickerBrowserView stickerAtIndex:(NSInteger)index;

再看MSStickerBrowserViewController就十分容易了,它只是将MSStickerBrowserView封装在了一个UIViewController中,并且这个UIViewController遵守了MSStickerBrowserViewDataSource协议,开发者直接实现协议方法即可。


四、开发Messages App中的建议


       下面是Apple对Messages App的定位和一些建议,还有我的一些理解:


1.确保应用是有用的并且易于理解。


2.功能要聚焦单一,不要组合多种功能在一起。


3.Messages通常用在双人非正式的交谈中,应从这里入手,让交流更加有趣。


4.Messages的最大两点是分享,利用这一点出发开发Messages App。


5.插图内容布局要注意,系统会自动将内容变为圆角,不要把重要的信息放在角落。


6.注意,在紧凑模式下,Messages App的界面是不允许水平滚动的。


7.同样,在紧凑模式下,Messages App不允许键盘输入。

目录
相关文章
|
13天前
|
存储 Swift iOS开发
使用Swift开发一个简单的iOS应用的详细步骤。
使用Swift开发iOS应用的步骤包括:创建Xcode项目,设计界面(Storyboard或代码),定义数据模型,实现业务逻辑,连接界面和逻辑,处理数据存储(如Core Data),添加网络请求(必要时),调试与测试,根据测试结果优化改进,最后提交至App Store或其它平台发布。
32 0
|
13天前
|
安全 Swift iOS开发
【Swift 开发专栏】Swift 与 UIKit:构建 iOS 应用界面
【4月更文挑战第30天】本文探讨了Swift和UIKit在构建iOS应用界面的关键技术和实践方法。Swift的简洁语法、类型安全和高效编程模型,加上与UIKit的紧密集成,使开发者能便捷地创建用户界面。UIKit提供视图、控制器、布局、动画和事件处理等功能,支持灵活的界面设计。实践中,遵循设计原则,合理组织视图层次,运用布局和动画,以及实现响应式设计,能提升界面质量和用户体验。文章通过登录、列表和详情界面的实际案例展示了Swift与UIKit的结合应用。
|
13天前
|
存储 安全 Swift
【Swift 开发专栏】使用 Swift 开发一个简单的 iOS 应用
【4月更文挑战第30天】本文介绍了使用 Swift 开发简单 iOS 待办事项应用的步骤。首先,阐述了 iOS 开发的吸引力及 Swift 语言的优势。接着,详细说明了应用的需求和设计,包括添加、查看和删除待办事项的功能。开发步骤包括创建项目、界面搭建、数据存储、功能实现,并提供了相关代码示例。最后,强调了实际开发中需注意的细节和优化,旨在帮助初学者掌握 Swift 和 iOS 开发基础。
|
20天前
|
搜索推荐 API iOS开发
利用SwiftUI构建动态iOS天气应用
【4月更文挑战第23天】 在本文中,我们将探讨如何使用SwiftUI框架实现一个动态的iOS天气应用程序。将重点介绍如何通过集成第三方天气API、设计响应式用户界面以及应用数据绑定技术来增强用户体验。我们的目标是创建一个能够根据当前位置实时更新天气信息的应用,并确保其界面简洁、易用且美观。
16 0
|
21天前
|
存储 编解码 JSON
利用SwiftUI构建高效iOS天气应用
【4月更文挑战第21天】 在本文中,我们将深入探讨如何运用SwiftUI框架打造一个响应迅速且用户友好的iOS天气应用程序。我们将重点放在利用SwiftUI的声明式语法简化界面开发,并通过结合Core Location和Networking APIs实现实时天气数据的获取与展示。文章将详细阐述整个开发过程,包括API集成、数据模型设计、用户界面布局以及动态适配不同屏幕尺寸的策略。
|
开发者 iOS开发
iOS10中Messages独立应用与扩展插件详析(一)
iOS10中Messages独立应用与扩展插件详析
212 0
iOS10中Messages独立应用与扩展插件详析(一)
|
信息无障碍 开发者
iOS10中Messages独立应用与扩展插件详析(二)
iOS10中Messages独立应用与扩展插件详析
230 0
iOS10中Messages独立应用与扩展插件详析(二)
|
2月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
106 3
|
4月前
|
存储 iOS开发
iOS 开发,如何进行应用的本地化(Localization)?
iOS 开发,如何进行应用的本地化(Localization)?
123 2
|
4月前
|
存储 数据建模 数据库
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
IOS开发数据存储:什么是 UserDefaults?有哪些替代方案?
43 0