亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS中獲取系統(tǒng)相冊中的圖片實例

 更新時間:2016年11月07日 09:33:26   作者:船長_  
這篇文章主要介紹了iOS中獲取系統(tǒng)相冊中的圖片實例,具有一定的參考價值沒有需要的朋友可以了解一下。

本文介紹了iOS中獲取系統(tǒng)相冊中的圖片,在很多應(yīng)用中都能用到,可以獲取單張圖片,也可以同時獲取多張圖片,廢話不多說了,看下面吧。

一.獲取單張圖片

思路:

1.利用UIImagePickerController可以從系統(tǒng)自帶的App(照片\相機)中獲得圖片

2.設(shè)置代理,遵守代理協(xié)議

注意這個UIImagePickerController類比較特殊,需要遵守兩個代理協(xié)議

@interface ViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate>

3.實現(xiàn)代理的方法didFinishPickingMediaWithInfo

- (void)getImageFromIpc
{
  // 1.判斷相冊是否可以打開
  if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) return;
  // 2. 創(chuàng)建圖片選擇控制器
  UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
  /**
   typedef NS_ENUM(NSInteger, UIImagePickerControllerSourceType) {
   UIImagePickerControllerSourceTypePhotoLibrary, // 相冊
   UIImagePickerControllerSourceTypeCamera, // 用相機拍攝獲取
   UIImagePickerControllerSourceTypeSavedPhotosAlbum // 相簿
   }
   */
  // 3. 設(shè)置打開照片相冊類型(顯示所有相簿) 
  ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
  // ipc.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
  // 照相機
  // ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
  // 4.設(shè)置代理
  ipc.delegate = self;
  // 5.modal出這個控制器
  [self presentViewController:ipc animated:YES completion:nil];
}

#pragma mark -- <UIImagePickerControllerDelegate>--
// 獲取圖片后的操作
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
  // 銷毀控制器
  [picker dismissViewControllerAnimated:YES completion:nil];

  // 設(shè)置圖片
  self.imageView.image = info[UIImagePickerControllerOriginalImage];
}

二.獲取多張圖片

思路:

  • 導入頭文件#import <Photos/Photos.h>
  • PHAsset : 一個資源, 比如一張圖片\一段視頻
  • PHAssetCollection : 一個相簿
  • PHImageManager 圖片管理者,是單例,發(fā)送請求才能從asset獲取圖片
  • PHImageRequestOptions圖片請求選項
  • 注意:這個類是iOS8開始推廣,iOS9開始廢棄之前的方法
  • 系統(tǒng)適配iOS8之前,用下面這個庫里面的API
#import <AssetsLibrary/AssetsLibrary.h>

1.獲得所有相簿的原圖

- (void)getOriginalImages
{
  // 獲得所有的自定義相簿
  PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
  // 遍歷所有的自定義相簿
  for (PHAssetCollection *assetCollection in assetCollections) {
    [self enumerateAssetsInAssetCollection:assetCollection original:YES];
  }

  // 獲得相機膠卷
  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
  // 遍歷相機膠卷,獲取大圖
  [self enumerateAssetsInAssetCollection:cameraRoll original:YES];
}

2.獲得所有相簿中的縮略圖

- (void)getThumbnailImages
{
  // 獲得所有的自定義相簿
  PHFetchResult<PHAssetCollection *> *assetCollections = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAlbumRegular options:nil];
  // 遍歷所有的自定義相簿
  for (PHAssetCollection *assetCollection in assetCollections) {
    [self enumerateAssetsInAssetCollection:assetCollection original:NO];
  }
  // 獲得相機膠卷
  PHAssetCollection *cameraRoll = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary options:nil].lastObject;
  [self enumerateAssetsInAssetCollection:cameraRoll original:NO];
}

3.遍歷相冊

/**
 * 遍歷相簿中的所有圖片
 * @param assetCollection 相簿
 * @param original    是否要原圖
 */
- (void)enumerateAssetsInAssetCollection:(PHAssetCollection *)assetCollection original:(BOOL)original
{
  NSLog(@"相簿名:%@", assetCollection.localizedTitle);

  PHImageRequestOptions *options = [[PHImageRequestOptions alloc] init];
  // 同步獲得圖片, 只會返回1張圖片
  options.synchronous = YES;

  // 獲得某個相簿中的所有PHAsset對象
  PHFetchResult<PHAsset *> *assets = [PHAsset fetchAssetsInAssetCollection:assetCollection options:nil];
  for (PHAsset *asset in assets) {
    // 是否要原圖
    CGSize size = original ? CGSizeMake(asset.pixelWidth, asset.pixelHeight) : CGSizeZero;

    // 從asset中獲得圖片
    [[PHImageManager defaultManager] requestImageForAsset:asset targetSize:size contentMode:PHImageContentModeDefault options:options resultHandler:^(UIImage * _Nullable result, NSDictionary * _Nullable info) {
      NSLog(@"%@", result);
    }];
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • iOS實現(xiàn)圓角箭頭矩形的提示框

    iOS實現(xiàn)圓角箭頭矩形的提示框

    不知道大家發(fā)現(xiàn)了沒,在現(xiàn)在的很多App中常使用圓角箭頭矩形, 如微博分組提示框, 地圖坐標顯示點等。iPad 中有 UIPopoverController 類供開發(fā)使用, iPhone中就需要開發(fā)人員定制了。那么下面這篇文中就來聊聊定制圓角箭頭矩形提示框,有需要的朋友們可以參考借鑒。
    2016-11-11
  • iOS 雷達效果實例詳解

    iOS 雷達效果實例詳解

    這篇文章主要介紹了iOS 雷達效果實例詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • IOS  Swift3 四種單例模式詳解及實例

    IOS Swift3 四種單例模式詳解及實例

    這篇文章主要介紹了IOS Swift3 四種單例模式詳解及實例的相關(guān)資料,這里對四種單例模式進行了實例介紹 ,需要的朋友可以參考下
    2016-12-12
  • iOS中正則表達式的運用示例代碼

    iOS中正則表達式的運用示例代碼

    正則表達式(廣為所知的“regex”)是一個字符串或一個字符序列來說明一種模式,把它作為一個搜索字符串-非常強大!下面這篇文章主要給大家介紹了關(guān)于iOS中正則表達式運用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-09-09
  • Xcode 8打印log日志的問題小結(jié)及解決方法

    Xcode 8打印log日志的問題小結(jié)及解決方法

    這篇文章主要介紹了Xcode 8打印log日志的問題小結(jié)及解決方法的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • IOS檢測指定路徑的文件是否存在

    IOS檢測指定路徑的文件是否存在

    本文給大家分享的是在IOS開發(fā)中檢測指定文件是否存在的方法,給大家匯總了4種,十分實用,小伙伴們根據(jù)自己的需求自由選擇吧。
    2015-05-05
  • IOS開發(fā) 支持https請求以及ssl證書配置詳解

    IOS開發(fā) 支持https請求以及ssl證書配置詳解

    這篇文章主要介紹了IOS開發(fā) 支持https請求以及ssl證書配置詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 使用iOS控件UICollectionView生成可拖動的桌面的實例

    使用iOS控件UICollectionView生成可拖動的桌面的實例

    本篇文章主要介紹了使用iOS控件UICollectionView生成可拖動的桌面,具有一定的參考價值,有需要的可以了解一下。
    2016-12-12
  • 實例講解如何在iOS應(yīng)用開發(fā)中使用設(shè)計模式中的代理模式

    實例講解如何在iOS應(yīng)用開發(fā)中使用設(shè)計模式中的代理模式

    這篇文章主要介紹了實例講解如何在iOS應(yīng)用開發(fā)中使用設(shè)計模式中的代理模式,示例為傳統(tǒng)的Objective-C語言代碼,需要的朋友可以參考下
    2016-03-03
  • ios下移動文件方法匯總

    ios下移動文件方法匯總

    這篇文章主要給大家匯總了一下ios下移動文件方法,從簡單到復雜,十分的實用,有需要的小伙伴可以參考下。
    2015-05-05

最新評論