在collectionView中显示相机胶卷

时间:2017-03-05 06:59:38

标签: swift3 collectionview camera-roll

我知道这个问题已经在这个网站上得到了解答但我尝试了代码并收到错误请帮我在收藏视图中显示我的相机卷(我知道我必须在info.plist中添加照片用法请Just专注于我的代码谢谢!)

这是我的视图控制器代码

class translateViewController: UIViewController , UINavigationControllerDelegate , UIImagePickerControllerDelegate , UICollectionViewDataSource, UICollectionViewDelegate  {

@IBOutlet var myimageView: UIImageView!

@IBAction func importImage(_ sender: Any) {

    let image = UIImagePickerController()
    image.delegate = self
    image.sourceType = UIImagePickerControllerSourceType.photoLibrary

    image.allowsEditing = false
    self.present(image , animated: true)
    {

    }
}
@IBOutlet weak var cameraRollCollectionView: UICollectionView!


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage{
        myimageView.image = image
    }
    else {
        print("Error")
    }

    self.dismiss(animated: true, completion: nil)

}
@IBOutlet var translatebackgroundimg: UIImageView!
@IBOutlet var translatefrontimg: UIImageView!

var assetCollection: PHAssetCollection!
var photosAsset: PHFetchResult<AnyObject>!
var assetThumbnailSize: CGSize!

override func viewDidLoad() {
    super.viewDidLoad()

    let fetchOptions = PHFetchOptions()

    let collection:PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)

    if let first_Obj:AnyObject = collection.firstObject{
        //found the album
        self.assetCollection = first_Obj as! PHAssetCollection
    }



    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
    let blurView = UIVisualEffectView(effect: blurEffect)

    blurView.frame =  CGRect(x: self.translatebackgroundimg.frame.origin.x, y: self.translatebackgroundimg.frame.origin.y, width: self.translatebackgroundimg.frame.size.width, height: self.translatebackgroundimg.frame.size.height)

    blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

    self.translatebackgroundimg.addSubview(blurView)

    // Do any additional setup after loading the view.
    translatefrontimg.image = UIImage(named: "Translate.png")

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

override func viewDidAppear(_ animated: Bool) {

    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
    let blurView = UIVisualEffectView(effect: blurEffect)
    blurView.frame = translatebackgroundimg.bounds
    translatebackgroundimg.addSubview(blurView)
    translatebackgroundimg.frame = self.view.bounds
}

override func viewWillAppear(_ animated: Bool) {
    // Get size of the collectionView cell for thumbnail image
    if let layout = self.cameraRollCollectionView!.collectionViewLayout as? UICollectionViewFlowLayout{
        let cellSize = layout.itemSize

        self.assetThumbnailSize = CGSize(width: cellSize.width, height: cellSize.height)
    }

    //fetch the photos from collection
    self.photosAsset = (PHAsset.fetchAssets(in: self.assetCollection, options: nil) as AnyObject!) as! PHFetchResult<AnyObject>!


    self.cameraRollCollectionView!.reloadData()

}
func numberOfSections(in collectionView: UICollectionView) -> Int {
    // #warning Incomplete implementation, return the number of sections
    return 1
}


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    // #warning Incomplete implementation, return the number of items
    var count: Int = 0

    if(self.photosAsset != nil){
        count = self.photosAsset.count
    }

    return count;
}


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cameraCell", for: indexPath as IndexPath)

    //Modify the cell
    let asset: PHAsset = self.photosAsset[indexPath.item] as! PHAsset

    PHImageManager.default().requestImage(for: asset, targetSize: self.assetThumbnailSize, contentMode: .aspectFill, options: nil, resultHandler: {(result, info)in
        if result != nil {

        cameraCell.userImage.image = result

        }
    })

    return cell
}

// MARK: - UICollectionViewDelegateFlowLayout methods
func collectionView(collectinView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 4
}

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
    return 1
}

// UIImagePickerControllerDelegate Methods
func imagePickerControllerDidCancel(_ picker: UIImagePickerController){
    picker.dismiss(animated: true, completion: nil)
}

这是我的CollectionViewCell代码

class cameraCell: UICollectionViewCell , UIImagePickerControllerDelegate {

@IBOutlet weak var userImage: UIImageView!


func configurecell(image: UIImage){


    userImage.image = image





}
}

0 个答案:

没有答案