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不允許鍵盤輸入。