2017-07-07 5 views

答えて

0

私はあなたが何を望んでいるのか分かりません。

iOS 8をターゲットに設定しようとしていますか?

これは、写真を取得する方法で、iOS(8.0以降)、macOS(10.11以降)、tvOS(10.0以降)で動作します。それ紛らわしいかもしれ

  1. 第一の機能が第二の機能は、実際にそれらを

    //import the Photos framework 
    import Photos 
    //in these arrays I store my images and assets 
    var images = [UIImage]() 
    var assets = [PHAsset]() 
    
    fileprivate func setPhotoOptions() -> PHFetchOptions{ 
         let fetchOptions = PHFetchOptions() 
         fetchOptions.fetchLimit = 15 
         let sortDescriptor = NSSortDescriptor(key: "creationDate", ascending: false) 
         fetchOptions.sortDescriptors = [sortDescriptor] 
         return fetchOptions 
        } 
    
    
    
    
    fileprivate func fetchPhotos() { 
    let allPhotos = PHAsset.fetchAssets(with: .image, options: setPhotoOptions()) 
    
    DispatchQueue.global(qos: .background).async { 
    
        allPhotos.enumerateObjects({ (asset, count, stop) in 
         let imageManager = PHImageManager.default() 
         let targetSize = CGSize(width: 200, height: 200) 
         let options = PHImageRequestOptions() 
         options.isSynchronous = true 
         imageManager.requestImage(for: asset, targetSize: targetSize, contentMode: .aspectFit, options: options, resultHandler: { (image, info) in 
    
          if let image = image { 
           self.images.append(image) 
           self.assets.append(asset) 
    
    
          } 
    
          if count == allPhotos.count - 1 { 
           DispatchQueue.main.async { 
            //basically, here you can do what you want 
            //(after you finish retrieving your assets) 
            //I am reloading my collection view 
            self.collectionView?.reloadData() 
           } 
          } 
    
         }) 
    
    
        }) 
    
    } 
    

    }

をフェッチする写真
  • をフェッチするオプションを設定する場合 コードがコメントされています

    OPの解明に基づいて編集

    あなたがUIImagePickerControllerDelegate

    は、次の関数内

    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    

    を実装するデリゲートを設定する必要がある方法は、このような画像を得る言った:私は同じインクルードしていた

    var image : UIImage = info[UIImagePickerControllerEditedImage] as! UIImage 
    
  • +0

    私は私が私の答え –

    +0

    から得ている画像からPHAssetを取得したい私はこれを行うための唯一の方法は、全体の写真のライブラリを取得して、各写真を列挙であると信じてすることはできません! –

    +0

    を編集した私はUIImagePickerController –

    1

    を最初にアクセス権を確認し、アクセスを要求する:

    let status = PHPhotoLibrary.authorizationStatus() 
    
    if status == .notDetermined { 
        PHPhotoLibrary.requestAuthorization({status in 
    
        }) 
    } 
    

    あなたのUIImagePickerControllerをトリガーするものまでちょうどフックします。デリゲートコールには、PHAssetがuserInfoに含まれるようになりました。

    guard let asset = info[UIImagePickerControllerPHAsset] as? PHAsset 
    
    関連する問題