LivePhoto是iOS9新推出的一種拍照方式,相似於拍攝Gif圖或錄製視頻片斷生成圖片。若是沒有畫面感,能夠聯想《哈利波特》霍格沃茨城堡的壁畫,哈哈,很炫酷有木有,但坑爹的是隻有iphone6S以上機型纔可使用LivePhoto拍照,6S如下機型暫只可查看。效果以下:html
LivePhoto效果圖
具體如何使用可參照以下網址,本文主要在代碼角度幫助你們爲本身的App添加展現LivePhoto圖片的功能。
蘋果 Live Photo 怎麼拍, Live Photos怎麼使用框架
第一步,打開系統相冊 咱們須要建立UIImagePickerController對象,設置對應來源類型,代理等,這裏須要注意要額外設置mediaTypes(媒體類型),以支持加載LivePhoto類型圖片。還有爲了適配iOS10,不要忘記在info.plist中設置隱私權限Privacy - Photo Library Usage Descriptioniphone
UIImagePickerController *ipc = [[UIImagePickerController alloc]init];
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
ipc.delegate = self;
// 設置mediaTypes 添加LivePhoto類型圖片
NSArray *mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeLivePhoto];
ipc.mediaTypes = mediaTypes;
[self presentViewController:ipc animated:YES completion:^{
}]; 若發現kUTTypeImage類型報錯,不要忘記添加MobileCoreServices框架動畫
第二步,獲取相冊中LivePhoto圖片 對圖片類型進行判斷,若是爲普通圖片,使用UIImageView加載便可,若爲LivePhoto類型,使用PHPhotoLiveView進行顯示。這裏須要添加Photos與PhotosUI框架,分別用於對LivePhoto的判斷與顯示。具體代碼以下:代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
[self dismissViewControllerAnimated:YES completion:^{
PHLivePhoto *photo = [info objectForKey:UIImagePickerControllerLivePhoto];
if (photo) {
PHLivePhotoView *photoView = [[PHLivePhotoView alloc]initWithFrame:self.view.bounds];
photoView.livePhoto = [info objectForKey:UIImagePickerControllerLivePhoto];
photoView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:photoView];
} else {
NSLog(@"普通圖片,使用UIImageView加載便可");
}
}];
}
第三步,讓圖片動起來 PhotosUI框架爲咱們提供了兩種LivePhoto的動態效果,一種爲持續數秒,第二種爲所有循環展現。
可經過以下方法進行調用視頻
//效果1
[photoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleHint];
//效果2
[photoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleFull]; 對應的中止動畫的方法爲htm
[photoView stopPlayback]; 是否是So easy?
參考連接:How to display Live Photos in a view controller對象
demo下載連接 三步爲你的App集成LivePhoto功能demoblog