ios - 如何查看带有 NohanaImagePicker pod 文件的图像?

标签 ios swift3 image-gallery collectionview photolibrary

我正在使用 swift 3 并使用 NohanaImagePickerpod 文件来选择多个图像并且它运行良好问题是我想在 Collection View 中看到选定的图像并且我将在这一行中收到 fatal error

        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
   }

最佳答案

使用以下函数

    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
}

让我们将第一个 Assets 作为

    let phAsset = pickedAssts.first

关于ios - 如何查看带有 NohanaImagePicker pod 文件的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44306043/

相关文章:

ios - 如何在iOS上修复Ironsource Unity SDK中的错误

ios - 不要使用 Cocoapods 在发布版本中集成 TestFlight SDK

swift3 - 在 Swift 3 中单击 textField 时在 tableView 上搜索 Google Places?

Javascript 画廊只能运行一次

ios - 在我的应用程序中使用 IBAction 打开时 iBooks 应用程序崩溃

ios - 如何快速使用滑动手势翻转 x 和 y 轴上的图像?

ios - 在 Swift3 中缓存自定义对象数组

swift - 使用 sqlite.swift 过滤多列?

actionscript-3 - ActionScript 3 : Dynamically adding movieclips constrained to a container

javascript - 为什么我的 Swiper slider 无法在 Django 中工作?