天天看點

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

繼續閱讀