2017-02-10 13 views
0

Я начал изучать Swift и в настоящее время зарегистрирован в классе, который должен построить приложение для ios. Я попытался получить фотографии и поместить их в подборку, и он отлично работал на симуляторе Xcode. Тем не менее, я узнал, что collectionView даже не загружается, когда я попробовал его на iPhone. Код для запроса изображения выглядит следующим образом.Работа с загрузкой фотографий в фотоальбом в UICollectionView

let imgManager = PHImageManager.default() 

    let requestOptions = PHImageRequestOptions() 
    requestOptions.isSynchronous = true 
    requestOptions.deliveryMode = .highQualityFormat 

Варианты запроса:

let fetchOptions = PHFetchOptions() 
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] 
    if let fetchResult :PHFetchResult = PHAsset.fetchAssets(with: .image , options: fetchOptions) { 

     if fetchResult.countOfAssets(with: PHAssetMediaType.image) > 0 { 

      for i in 0..<fetchResult.count{ 

       imgManager.requestImage(for: fetchResult.object(at: i) as! PHAsset, targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: requestOptions, resultHandler: {image, Error in 
       self.imageArray.append(image!) 
       self.PHArray.append(fetchResult.object(at: i)) 
        print("Success") 
       }) 

      } 

Как-то в iPhone это будет по-прежнему просить фотографии, но не будет показывать collectionView. Я очень новичок в кодировании, и я не уверен, что это подходит. Было бы очень приятно, и любые искренние советы были бы приветствованы.

+0

И что происходит? Вы печатаете («Успех») огонь? Я ожидаю, что если вам это нужно, перезагрузите представление коллекции с помощью .reloadData() ' – Grimxn

+0

. Будете ли вы ее печатать чрезвычайно? Это слишком долго для их загрузки, когда есть больше фотографий. Я попробовал, но он не работает. – Chajunhyung

ответ

0

вар изображения: NSMutableArray = NSMutableArray()

func fetchPhotos() 
{ 
    images = NSMutableArray() 
    // totalImageCountNeeded = 3 
    self.fetchPhotoAtIndexFromEnd(0) 
} 

func fetchPhotoAtIndexFromEnd(index:Int) 
{ 
    let status : PHAuthorizationStatus = PHPhotoLibrary.authorizationStatus() 
    if status == PHAuthorizationStatus.Authorized 
    { 
    let imgManager = PHImageManager.defaultManager() 
    let requestOptions = PHImageRequestOptions() 
    requestOptions.synchronous = true 

    let fetchOptions = PHFetchOptions() 
    fetchOptions.sortDescriptors = [NSSortDescriptor(key:"creationDate", ascending: true)] 

    if let fetchResult: PHFetchResult = PHAsset.fetchAssetsWithMediaType(PHAssetMediaType.Image, options: fetchOptions) 
    { 
     if fetchResult.count > 0 
     { 
      imgManager.requestImageForAsset(fetchResult.objectAtIndex(fetchResult.count - 1 - index) as! PHAsset, targetSize: CGSizeMake(self.img_CollectionL.frame.size.height/3, self.img_CollectionL.frame.size.width/3), contentMode: PHImageContentMode.AspectFill, options: requestOptions, resultHandler: { (image, _) in 
       //self.images.addObject(image!) 
       if image != nil 
       { 
        self.images.addObject(image!) 
       } 
       if index + 1 < fetchResult.count && self.images.count < 20 //self.totalImageCountNeeded 
       { 
        self.fetchPhotoAtIndexFromEnd(index + 1) 
       } 
       else 
       { 
        print("Completed array: \(self.images)") 
       } 
      }) 
      self.img_Collection.reloadData() 
     } 
    } 
    } 
} 

func collectionView(_ collectionView: UICollectionView, 
          numberOfItemsInSection section: Int) -> Int 
{ 
    return images.count 
} 

func collectionView(_ collectionView: UICollectionView, 
          cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
{ 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell1", forIndexPath: indexPath) 
    let imagess_ : UIImageView = cell.viewWithTag(100) as! UIImageView 
    imagess_.image = images [indexPath.row] as? UIImage 
     return cell 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^