2017-06-01 22 views
0

我使用SWIFT 3和使用NohanaImagePickerpod文件來選擇多個圖像和它的運作良好的問題是,我想看看在集合視圖中選擇圖片,我會收到致命錯誤在這行如何使用NohanaImagePicker pod文件查看圖像?

 cell.imageforCV.image = ViewController.imgArray[indexPath.row] 

我用這裏imgArray

靜態變化是我的代碼

import UIKit 
import Photos 
import NohanaImagePicker 

class ViewController: UIViewController , NohanaImagePickerControllerDelegate , UICollectionViewDelegate , UICollectionViewDataSource { 

static var imgArray = [UIImage]() 
static var imgCount = Int() 
@IBOutlet weak var imageCollectionView: UICollectionView! 
var images = [ PHAsset]() 
@IBAction func gallery(_ sender: UIButton) { 

let picker = NohanaImagePickerController() 
    picker.delegate = self 
    present(picker, animated: true, completion: nil) 
    picker.maximumNumberOfSelection = 200 
    print("\(picker)") 


} 
func nohanaImagePickerDidCancel(_ picker: NohanaImagePickerController) { 
    print("Canceled") 
    picker.dismiss(animated: true, completion: nil) 
} 

    func nohanaImagePicker(_ picker: NohanaImagePickerController, didFinishPickingPhotoKitAssets pickedAssts :[PHAsset]) { 
    print("Completed\n\tpickedAssets = \(pickedAssts)") 
    picker.dismiss(animated: true, completion: nil) 
    performSegue(withIdentifier: "back", sender: self) 
    let numberOfImages = pickedAssts.count 
    print("\(numberOfImages)") 


    ViewController.imgCount = pickedAssts.count 

    var phAssetArray : [PHAsset] = [] 

    for i in 0..<pickedAssts.count 
    { 
     ViewController.imgArray.append(self.getAssetThumbnail(asset: pickedAssts[i])); 
    } 
    let size = CGSize(width: 50, height: 50) 
    let options = PHImageRequestOptions() 

    let manager : PHCachingImageManager = PHCachingImageManager() 


    manager.startCachingImages(for: phAssetArray, 
                targetSize: size, 
                contentMode: .aspectFill, 
                options: options) 

    imageCollectionView.reloadData() 
       } 


func getAssetThumbnail(asset: PHAsset) -> UIImage { 
    var retimage = UIImage() 
    print(retimage) 
    let manager = PHImageManager.default() 
    manager.requestImage(for: asset, targetSize: CGSize(width: 50.0, height: 50.0), contentMode: .aspectFit, options: nil, resultHandler: {(result, info)->Void in 
     retimage = result! 
    }) 
    print(retimage) 
    return retimage 
} 

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


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = imageCollectionView.dequeueReusableCell(withReuseIdentifier: "imageCell", for: indexPath) as! imageCell 

    print(ViewController.imgArray.count) 
    print(indexPath.row) 
    print(ViewController.imgArray[indexPath.row]) 



    cell.imageforCV.image = ViewController.imgArray[indexPath.row] 

    return cell 

} 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     imageCollectionView.reloadData() 

     self.imageCollectionView!.dataSource = self 
     self.imageCollectionView!.delegate = self 


    let picker = NohanaImagePickerController() 

    // Set the maximum number of selectable images 

    // Set the cell size 
    picker.numberOfColumnsInPortrait = 2 
    picker.numberOfColumnsInLandscape = 3 

    // Show Moment 
    picker.shouldShowMoment = true 

    // Show empty albums 
    //  picker.shouldShowMoment = shouldShowEmptyAlbum = true 

    // Hide toolbar 
    picker.shouldShowEmptyAlbum = true 

    // Disable to pick asset 
    picker.canPickAsset = { (asset:Asset) -> Bool in 
     return false 
    } 

    // Color 
    ColorConfig.backgroundColor = UIColor.white 
    } 

回答

1

使用下面的函數

func getAssetThumbnail(asset: PHAsset) -> UIImage { 
    let manager = PHImageManager.default() 
    let option = PHImageRequestOptions() 
    var thumbnail = UIImage() 
    option.version = .original 
    option.isSynchronous = true 
    manager.requestImage(for: asset, targetSize: CGSize(width: 100, height: 100), contentMode: .aspectFit, options: option, resultHandler: {(result, info)->Void in thumbnail = result! }) 
    return thumbnail 
} 

讓我們首先作爲資產

let phAsset = pickedAssts.first