照片框架정리

框架照片

iCloud照片库实时 照片및照片관 관리되는图像및视频资产을가지고다。 의기의资产또는缩略图이비동지를기비동로하며리하며,내용을정수,수정된기합니다합니다。

개요

iOS,macOSPhotos框架, Photos和사진능능을능을원하는 。。 iOS操作系统, Photos框架Photos框架, iCloud Photo Library和照片资产,视频资产和软件。 架构,显示,回放,资产,图像,视频内容,iCloud和资产集合。

특징&개념

iOS的tvOS, Photos框架和 照片库中的照片库

  • 相片库 :相片框架模型相片库( PHAssetPHAssetCollectionPHCollectionList )相片库相片项目(资产(图像,视频,实时照片)),资产收藏夹(相册)或moment들),그리고集合리스트(相册文件夹moment或moment모음들)이다。 이읽기전용이며,변경불가능(不可变)이며,오직元数据만다。 하는터를터를터를용하여용하여용하여하는하는하는。고다 h h h ary h h PHPhtoLibrary 명시적으로커밋합니다。 동일한동일한。동일한동일한동일한동일한동일한。있습니다。다。다
  • 类别 :PHPhotoLibrary类别资产集合更改处理程序。 照片框架资产内容元数据集合资产资产资产。 PHChange Collection view를를view를객체Collection Collection Collection Collection。유유를를를트트다
  • 照片앱의기능들지원。 照片있는时刻해당하는资产찾는데 PHCollectionList 클래스를사용하십시오。 爆破식별하려면식별 하려면 As용 하십시오 As As As PHAsset용 하십시오 용하십시오 하십시오。 iCloud照片库的 照片照片框架和资产集合,以及iCloud的照片和照片
  • 资产과缩略图 。 影片资产或AVFoundation资产,或资产资产资产负债表PHImageManager资产。 照片框架 양에framework양에양에미재재재재재캐싱합니캐싱합니캐싱합니다。 资产管理器(缩略图,集合视图) PHCachingImageManager的资源管理器(预加载)。
  • 资产内容편집PHAsset PHAssetChangeRequest中的사진(照片)혹은(视频)내용을照片库요청하고정의합니다。 应用程序,照片框架,资产版本,版本,版本,PHAdjustmentData和版本。 。이이수사항의조터를터를있습니있습니다。

iOS,macOS, Photos框架Photos照片照片和照片。 使用PhotosUI 框架可以获取 PHContentEditingController的所有内容。 照片내용은 App Extension编程指南및PhotosUI참조 하세요。

符号

照片库와

1.들에이들에照片들에用户权限의기위해사용해라。

2.资产들과集合때사때。

3.照片库由,,,,、、、、、、、、、、、、、

PHPhotoLibrary —照片库照片库 객체이다。

资产들검색과사

相片模型库中的内容(资产,收藏集)。 이클래스들의스인스턴스들은기전용,변경가불이며,元数据만다。 资产들과集合용하려면를를를와와져온져온져온져온져온져온져온。。

PHAsset —照片库에图片,视频或实时照片를다。

PHAssetCollection —时刻,相册或智能相册中的照片资产。

PHCollectionList —用户的相册,即时相册照片资产集合。

PHCollection —照片资产集合및集合列表슈퍼클래스이다。

PHObject —照片模型。 (资产및集合)

PHFetchResult —照片获取턴된리턴된정렬된资产或收藏集,

PHFetchOptions —资产或收藏集照片,照片和照片。

资产내용로딩

照片资产的图像,视频或实时照片内容싶다싶이이스들을사용해라。 照片지정양에이미지를자동으로재사빠른다캐싱합니다。 资产资产资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表资产负债表。

PHImageManager —照片资产들리보기缩略图사사이즈图像혹은视频数据생성하는데에사용되는제메소드를다。

PHCachingImageManager —照片资产添加照片或视频数据到图像或视频数据。

PHImageRequestOptions —图像管理器添加照片资产和静态图像。

PHVideoRequestOptions —图像管理器扩展视频资产数据。

PHLivePhotoRequestOptions —图像管理器中的Live Photo资产。

PHLivePhoto —捕获Live Photo표현이다。

요청

资产或收藏集更改请求更改照片库。 资产资产报价,资产负债表。

PHAssetChangeRequest —照片库更改块—照片资产,照片,内容,照片内容

PHAssetCollectionChangeRequest —照片库更改块—照片资产集合,照片,批处理

PHCollectionListChangeRequest —照片库更改块—照片集列表,照片集,照片集,照片集

PHObjectPlaceholder —更改请求照片资产或照片集。

资产内容편집

资产数据资产管理。 照片资产调整数据资产调整数据资产调整数据 PhotosUI框架中的照片。

PHContentEditingInput —资产,图像和视频,实况照片内容,容器容器。

PHContentEditingOutput —照片资产,照片,视频或实时照片内容与容器容器。

PHAdjustmentData —资产,照片,实时照片内容,照片和视频。

PHContentEditingInputRequestOptions —照片资产内容,图像数据和视频数据。

PHLivePhotoEditingContext —实时照片,照片,视频和音频内容。

PHLivePhotoFrame —上下文,实时照片,框架和图像内容,容器容器。

관찰

照片框架,照片集,资产集合,资产列表,内容,元数据,数据包和数据包。 。를를를정를。를있습니트하여있습니있습니다。

PHPhotoLibraryChangeObserver —照片库변경사항을기리기프로토콜이다。

PHChange —照片库항에사항에항에이다。

PHObjectChangeDetails —资产或集合。

PHFetchResultChangeDetails —获取资产或集合资产

资产资源들을가지고

상의资产资产객체가각照片资产의数据나타냅니다。 러한용하여용하여용하여것과것과용해라직접용해라용해라용해라。

PHAssetResource —照片库–照片,视频,实时照片资产–数据资源。

PHAssetCreationRequest —照片库更改块-数据资源-图片资源-图片库

PHAssetResourceCreationOptions —资源资产照片资源资产。

PHAssetResourceManager-照片资产资源和数据资源。

PHAssetResourceRequestOptions —资产资源管理器提供资产数据。

媒体类型들과子类型들

PHAssetPHContentEditingInput添加资产和资产。

PHAssetMediaType —图像或视频资产,以及资产类型。

PHAssetMediaSubtype —照片,相框,视频和资产媒体。

WWDC 2014:介绍照片框架

iOS 8的ALAssetsLibrary를기대체하다。

照片및视频资产들,相册들,时刻들을있다。

资产,资产,资产负债表。

照片/视频内容및元数据있있다。

模型数据

模型对象

图书馆의다。

照片및视频资产들,时刻들,相册들,文件夹들

읽기전용이다。

线程에다。

资产

照片및视频를다。

资产

* 媒体类型

* 创立日期

* 位置

*最喜欢的

资产收集

정렬된资产들의收款

相册,时刻,智能相册

PHAssetCollection

*类型

*标题

*开始和结束日期

收藏清单

收藏의정렬된收藏

*资产收集및收集清单

文件夹,瞬间年份

PHCollectionList

*类型

*标题

*开始和结束日期

提取模型对象

模型객체에类方法들을获取。

모든视频资产获取

  [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo选项:无]; 

모든片刻

  [PHAssetCollection fetchMomentsWithOptions:nil]; 

筛选및排序选项을사용해라

获取收藏内容

收藏集的内容들을지않는다。

类方法들을提取

资产收集에资产를获取

  [PHAsset fetchAssetsInAssetCollection:myAlbum选项:无]; 

暂态集合

time运行时,瞬时收集

*결과들user,用户선택

정규收藏을가지고

*内容를获取

*당신의视图控制器재사있있다。

临时资产收集생성하기

  [PHAssetCollectiontransientAssetCollectionWithAssets:资产标题:title]; 

取得结果

同步,快速结果를를

提取크다。

*메모리에필요하지필요하다。

*批안에서

PHFetchResult에结果

*完整结果셋트의ID들을추적한다。

*공객체들을공공

* NSArray와API

进行模型变更

用户操作에원지원

*照片를收藏

*专辑에가

型号읽기읽이다,직접적으로수정할다。

变更请求API

变更要求类别

变更请求区안에서

工艺밖에서기비동로적용

变更请求类别

각型号等级을위한变更要求等级

PHAssetChangeRequest

PHAssetCollectionChangeRequest

PHCollectionListChangeRequest

Model정模型객체의API的产品。

setCreationDate:

setFavorite:

变更请求类别들은模型类别들의子类别由아니다提供。

更改请求类别들은线程안전,模型객체들,时刻。리했다。

오직更改请求块유효하다。

变更请求示例

  -(void)toggleFavorite:(PHAsset *)asset { 
  //更改必须在更改块中执行 
  [[PHPhotoLibrary sharedPhotoLibrary] performChanges:^ { 
  //为资产创建更改请求 
  PHAssetChangeRequest * changeRequest = [PHAssetChangeRequest changeRequestForAsset:资产]; 
  [changeRequest setFavorite:![资产isFavorite]]; 
  } 
  completeHandler:^(布尔成功,NSError *错误){…}]; 
  } 

创建新的模型对象

创建请求를

  request = [PHAssetChangeRequest creationRequestForAssetFromImage:image]; 

占位符对象

 占位符= [request placeholderForCreatedAsset]; 

*새로운참조참조지저장되

*收藏에

*유일하고,영구적인localIdentifier공할있다。

改变了吗?

完成处理程序更改。

型号객체들은refresh되지않는다。

副作用및外部变化!

处理模型变更

변경의消息来源가

*너의,다른

* iCloud照片库,iCloud照片共享,我的照片流

变更通知

를PHChange를다。

*后台队列에서다。

업데이트삭제된정정보

트된이트된获取결과들

*插入,更新,删除和移动

获取结果更改详细信息

获取结果은更改详细信息에암시적으로등록되어진다。

*백그라운드에서差异

*提取选项

PHFetchResultChangeDetails으로업데이트된提取结果를。

变更处理示例,第一部分

  -(void)photoLibraryDidChange:(PHChange *)change { 
  //重新调度到主队列 
  dispatch_async(dispatch_get_main_queue(),^ { 
  //获取更改详细信息 
  PHFetchResultChangeDetails * changeDetails = [更改 
changeDetailsForFetchResult:self.assets];
  //获取更新的提取结果 
 如果(changeDetails){ 
  self.assets = [changeDetails fetchResultAfterChanges]; 
  } 
  } 
  } 

变更处理示例,第二部分

  [collectionView performBatchUpdates:^ { 
 如果([[[changeDetails RemovedIndexes] count]){ 
  NSArray * removedIndexPaths = //从索引创建indexPath 
  [collectionView deleteItemsAtIndexPaths:removeIndexPath]; 
  } 
  if([[[changeDetails insertedIndexs] count]){ 
  NSArray * insertedIndexPaths =… 
  [collectionView insertItemsAtIndexPaths:insertedIndexPaths]; 
  } 
 如果([[[changeDetails更改索引]计数]){ 
  NSArray * changedIndexPaths =… 
  [collectionView reloadItemsAtIndexPaths:changedIndexPaths]; 
  } 
  } 

图像和视频数据

请求图像和视频数据

下载图像大小。

*어떤size들은캐쉬되어지지않는다。

*视频들은스트리밍다。

PHImageManager

반의size기반의图片들을다。

视频和视频。

API기API

network로network网络数据있다。

索取图像

  //请求具有160x160像素像元的正方形网格的图像数据 
  [管理器requestImageForAsset:图片targetSize:CGSizeMake(160,160)contentMode:PHImageContentModeAspectFill选项:nil requestHandler:^(UIImage * result,NSDictionary * info){ 
 如果(结果){ 
  [cell setImage:result]; 
  }其他{ 
  } 
  }]; 
  //创建图像请求对象 
  PHImageRequestOptions *选项= [PHImageRequestOptions新]; 
  //必要时从iCloud中获取图像并提供进度 
  options.networkAccessAllowed =是; 
  options.progressHandler = ^(BOOL降级,进度翻倍,NSError *错误,BOOL *停止){ 
  [self updateUserVisibleProgress:进度错误:error]; 
  }; 
  //使用选项控制请求行为 
  [manager requestImageForAsset:... options:options…。]; 

图像请求回调

  [经理requestImageForAsset:…^(UIImage * result,NSDictionary * info){ 
  //此块可以多次调用 
  }]; 

索取影片

  //请求播放项进行视频播放 
  [manager requestPlayerItemForVideo:video options:nil requestHandler:^(AVPlayerItem * item,NSDictionary * info){ 
  AVPlayer * player = [AVPlayer playerWithPlayerItem:playerItem]; 
  }]; 

高级视频请求

  //创建视频请求对象 
  PHVideoRequestOptions *选项= [PHVideoRequestOptions新]; 
  //确保我们具有最好的质量 
  options.deliveryMode = PHVideoRequestOptionsDeliveryModeHighQualityFormat; 
  //必要时从iCloud提取视频并提供进度 
  options.networkAccessAllowed =是; 
  options.progressHandler = ^(双重进度,NSError *错误,BOOL *停止){ 
  [self updateUserVisibleProgress:进度错误:error]; 
  }; 
  //使用选项控制请求行为 
  [manager requestExportSessionForVideo:视频选项:选项…]; 

滚动效果

缩略图网格스크롤링

보여지는缓存유지

  • 스크롤
  • 스크롤로캐싱중지

PHCachingImageManager

图片들을리로드하고다。

缓存图像管理器

请求缓存数据。

각视图控制器에대한实例

预热

PHCachingImageManager

  //使用与requestImageForAsset相同的参数 
  PHCachingImageManager * cim = [self cachingImageManager]; 
  NSArray * soonToBeVisibleAssets =… 
  [cim startCachingImagesForAssets:soonToBeVisibleAssets 
  targetSize:targetSize 
  contentMode:PHImageContentModeAspectFill 
 选项:无]; 
  NSArray * previouslyVisibleAssets =… 
  [cim stopCachingImagesForAssets:以前的VisibleAssets 
  targetSize:targetSize contentMode:PHImageContentModeAspectFill 
 选项:无]; 
 编辑图像和视频 

제자리에서

*운로운资产으로저장하지않아도다。

비파괴

。다。

iCloud用户指南。

编辑流程

获取输入

  //从资产获取输入 
  [资产requestContentEditingInputWithOptions:选项 
  completeHandler:^(PHContentEditingInput * editingInput,NSDictionary * info) 
  { 
  NSURL * url = [editingInput fullSizeImageURL]; 
  int orientation = [editingInput fullSizeImageOrientation]; 
  CIImage * inputImage = [CIImage imageWithContentsOfURL:网址选项: 
零];
  inputImage = [inputImage imageByApplyingOrientation:方向]; 
  //您的代码在这里 
  } 

保存输出

  //创建输出 
  PHContentEditingOutput * output = [[PHContentEditingOutput alloc] initWithContentEditingInput:输入]; 
  [jpegData writeToURL:output.renderedContentURL原子性:是]; 
  output.adjustmentData = AdjustmentData; 
  //将输出保存到资产 
  [图书馆performChanges:^ { 
  PHAssetChangeRequest *请求=… 
  [request setContentEditingOutput:contentEditingOutput]; 
  } completeHandler:^(布尔成功,NSError *错误){} 

可恢复的编辑

保存调整数据

  NSData * archivedData = [NSKeyedArchiver archivedDataWithRootObject:设置]; 
  PHAdjustmentData * adjustmentData = 
  [[PHAdjustmentData alloc] initWithFormatIdentifier:@“ com.mycompany” formatVersion:@“ 1.0 data:archivedData]; 
  PHContentEditingOutput *输出=… 
  Output.adjustmentData = AdjustmentData; 

调整数据

  PHContentEditingInputRequestOptions *选项=… 
  //您是否了解当前的调整 
  options.caHandleAdjustmentData:^ BOOL(PHAdjustmentData * adjustmentData) 
  { 
返回[adjustmentData.formatIdentifier isEqual:@“ com.mycompany”]
&& [adjustmentData.formatVersion isEqual:@“ 1.0”]];
  } 

照片编辑扩展

图像或视频编辑器

내장된照片앱相机및로부터이부터다。

需要什么

应用扩展程序目标

UIViewController상속

协议채택

用户界面

图片앱에보보지여导航栏

의리의扩展에기반한导航栏를。

协议采用

PHContentEditingController

startContentEditingWithInput:

finishContentEditingWithCompletionHandler:

canHandleAdjustmentData:

cancelContentEditing

获取输入并完成

  -(void)startContentEditingWithInput:(PHContentEditingInput *)input 
  placeholderImage:(UIImage *)placeholderImage 
  { 
  UIImage * image = input.displaySizeImage; 
  id settings = [self settingsFromAdjustmentData:input.adjustmentData]; 
  if(!settings){settings = [self defaultSettings];  } 
  …//设置用户界面 
  self.input =输入; 
  } 
  -(void)finishContentEditingWithCompletionHandler: 
  (void(^)(PHContentEditingOutput *))completionHandler 
  { 
  NSData * jpegData =…; 
  PHAdjustmentData * adjustmentData =…; 
  PHContentEditingOutput * output = [[PHContentEditingOutput alloc] initWithContentEditingInput:self.input]; 
  [jpegData writeToURL:output.renderedContentURL原子性:是]; 
  output.adjustmentData = AdjustmentData; 
  completeHandler(输出); 
  } 

恢复编辑

  -(BOOL)canHandleAdjustmentData:(PHAdjustmentData *)adjustmentData 
  { 
 返回[adjustmentData.formatIdentifier isEqual:@“ com.mycompany”] 
  && [adjustmentData.formatVersion isEqual:@“ 1.0”]]; 
  } 

Apple照片앱정정리

  • 插图 :이름을지름을정한사진추다할다。 。진을하거나하거나하거나하거나하거나하거나하거나할있습니다。
  • 内容 :스마트사지정한기준에자동으로사표시합니표시합니다。 생성하여들어들어들어들어2014年모든진진진。할할있습니있습니다있습니다。 진사앱해당해당준에추합니가합니다。 새로운사때마다사진준에준에진을합니합니합니가합니다。
  • 内容 :관함을가로구성하려면로다。 들어들어진으진으。있습니。 참조하십시오사용에보정보를보려면기그룹화하기폴더에서。

보관함을정리된로유지하기위해포함하여로용자의로로용자의다생성합니다。

  • 用户评级:보추가된로정보보포함합니사포함합니다。 在iCloud中下载iOS版Mac上的Mac版。
  • 用户的评论 :用户评级。 사자동으관함을로스캔하고술을술을술을。。。。 。사름을이름을지정하면람들의있습니있습니다。
  • 插图 :。지도에사축소판으로표시할다。 。。。。다。
  • 演员 :추억로표시한다。
  • 内容 :장사관함에보한사포함합니다。 이앨범에사진은사진을가진을다업데이트됩니다。 앨범에에에에나타나않만만만만만만。。。。。。다
  • 内容 :선호하는사진으로포함합니다。
  • 演员 :가져온사사포함합니다。
  • 비디오 :져온다。
  • 모션로모션 :iOS기에서가져온로모션다。
  • :iOS 기기 에서가져온스포함합니다。
  • 촬영사촬영 :iOS 기기 에서가져온사포함합니다。 이미고속촬영촬영。。。있습니。
  • 相片和影片 :相片和影片。 在iCloud中下载。
  • 用户评级 :iOS上的FaceTime应用商店。 主题진을。진을。。。。
  • iOS:iOS기기스포함합니다(잠자기/깨우기및Home버튼을촬영된촬영된)。
  • iPhoto相片 :iPhoto与Aperture的关系iPhoto相片与Aperture的关系。
  • 照片:照片的照片。 。로삭제되기특정기간。제삭사진이남습니다。 이있습니사진을보관함에영구적으로삭제할있습니다。
  • 가려짐 :가려진사진을다(사진보남남지만보이지않음)。 가>보려면보기>가려진사진보기를다。

苹果文件정리

PHFetchResult

照片框架的提取方法将资产或收藏集的정정리스트이다。

PHAsset,PHCollection,PHAssetCollection,PHAssetCollectionList照片,照片和照片。 NSArray的照片集。 NSArray与PHFetchResult相关的照片框架,以及相关的产品。

。액세를를를를를를를를를를。。。 얻을려면일하며하며합니합니합니합니합니합니합니합니합니합니합니합니합니합니Photo얻을려면Photo Photo Photo PHPhotoLibrary객체의로등록하십시오등록하십시오등록하십시오장한한한한한 index주의에유지하면서캐시합니다。 상이더지않으므로액세스액세가객체가다객체패치됩니다。 이인해로세스로인해전에있습니있습니있습니있습니다。

PH值变化

照片库항에사변경

照片框架는照片앱에서리앱에서资产,收藏集collection PHChange객체로제공합니다。 在PHPhotoLibraryChangeObserver中添加PHPhotoLibrary。

照片框架由PHChange产品,PHChange和相片提供。 changeDetails(for :)를전에전에전에。。전달합니다 在PHObjectChangeDetails和PHFetchResultChangeDetails中添加了批注。