添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
博学的篮球  ·  CheckBox 类 ...·  11 月前    · 
私奔的牛腩  ·  .net mvc html5 ...·  1 年前    · 

作为一个iOS开发者,大家都知道在苹果发布iPhone6s之后,iPhone在拍照时候就带了一个LivePhotos功能,如果打开就会在拍照时候同时生成一个视频。我自认为这个功能很不错,因为在许多拍照的时候抓拍到的效果会更好,而且LivePhotos是带声音的,这样的话它会帮我们记录下来很多快乐的,值得回忆的事情。那么很久之前就知道微博是支持这项功能的,那么下面我就介绍下LivePhotos在我们开发者手里是怎么使用的。

LivePhoto由一张 JPG 图片以及一个 45 格 MOV 影片档所组成。在播放LivePhoto时,这段 MOV 则以 15 格 / 秒的速度来播放。因为结合了图片与影片,因此一个 Live Photo 相当于一张普通图片的 2倍大小。iOS9以上系统的iOS设备可以查看LivePhoto照片。大家可以按照我下面的内容自己动手写一个小Demo。

<Photos/Photos.h>

<PhotosUI/PhotosUI.h>

<MobileCoreServices/MobileCoreServices.h>

其中PhotosUI包含一个PHLivePhotoView类,它继承自UIView可以用来显示LivePhoto。

选取相册照片

因为是个Demo我们就使用系统访问图片的UIImagePickerController,要记得iOS10的权限问题在info.plist加入权限。我们顺带加入一个访问出错的判断。记得一定要设置mediaTypes,要不然代理方法不会返回LivePhotos。

if ([ UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary ])

UIImagePickerController *picker = [[ UIImagePickerController alloc] init];

picker.delegate = self ;

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary ;

NSArray *mediaTypes = @[( NSString *)kUTTypeImage, ( NSString *)kUTTypeLivePhoto];

picker.mediaTypes = mediaTypes;

[ self presentViewController:picker animated: YES completion: nil ];

} else {

UIAlertView *alert = [[ UIAlertView alloc]

initWithTitle: @"访问图片库错误"

message: @""

delegate: nil

cancelButtonTitle: @"OK!"

otherButtonTitles: nil ];

[alert show];

我们在代理方法里直接把获取到的照片赋给PHLivePhotoView,我直接实现了如果没有LivePhoto时候的判断,大家可以自行处理。

- ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary < NSString *, id > *)info

[picker dismissViewControllerAnimated: YES completion: nil ];

PHLivePhoto *photo = [info objectForKey: UIImagePickerControllerLivePhoto ];

if (!photo) {

NSLog ( @"没有LinePhoto" );

return ;

self .livePhotoView.livePhoto = [info objectForKey: UIImagePickerControllerLivePhoto ];

- ( void )imagePickerControllerDidCancel:( UIImagePickerController *)picker {

[picker dismissViewControllerAnimated: YES completion: nil ];

LivePhotos有三种播放模式分别是PHLivePhotoViewPlaybackStyleHint(预览播放),PHLivePhotoViewPlaybackStyleFull(完全播放),PHLivePhotoViewPlaybackStyleUndefined(不播放)。大家Demo可以都写出来看一下效果。

[self.livePhotoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleHint] ;

我们再在PHLivePhotoView的代理方法里面检测一下是否正在播放,避免出现正在播放的时候重新开始影响效果。

- ( void ) livePhotoView :(PHLivePhotoView *)livePhotoView willBeginPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle {

self.isAnimating = YES;

- ( void ) livePhotoView :(PHLivePhotoView *)livePhotoView didEndPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle {

self.isAnimating = NO;

然后在播放之前我们做一个判断就可以避免了

if ( self .isAnimating) {

[ self .livePhotoView stopPlayback];

return ;

[ self .livePhotoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleHint];

以上就是关于LivePhotos的初级使用,当然这个功能如果引入到项目当中,肯定会涉及到上传,以及兼容安卓设备的显示,那么七牛云已经解决了这个问题,而且调用非常方便 点击这里查看

章节回顾

1. 【章节一】React  ES6 快速入门系列

2. Part 2, React Classes and ES7 Property Initializers

3. Part 3, Binding to methods of React class (ES7 included)

4. Part 4, React Mixins when using ES6 and React

5. Part 5, React and ES6 Workflow with JSPM

6. Part 6, React and ES6 Workflow with Webpack

阅读更多

CAEmitterLayer 粒子发射器,制作飘落的雪花,放射的烟花

Come on,免费申请加入一起众创社群

Swift中UICollectionView的使用

React Native图像变换 Transforms详解

Android 设计模式之Builder模式的简单使用

CAGradientLayer (蒙版)初步使用

Swift 内存管理(一)

Swift 内存管理(2.1 高级)

AppleTV入门及心得

六天魔鬼训练

React/React-Native/Flux/Redux/跨平台项目实战 6天魔鬼训练


扫描二维码

关注更多精彩

扫描二维码

关注更多精彩



点击“阅读原文”打开新页面