2016-09-19 35 views
0

使用DKImagePickerController从图库中选择多个图像和视频。但只能从图库中选择图像和视频,但无法从DKAssets获取选定图像并保存到阵列。花了一天多的时间。从DKAssests获取所选图像

下面是试图代码:

let pickerController = DKImagePickerController() 


     pickerController.assetType = DKImagePickerControllerAssetType.AllAssets 
     pickerController.allowsLandscape = false 
     pickerController.allowMultipleTypes = true 
     pickerController.sourceType = DKImagePickerControllerSourceType.Both 
     pickerController.singleSelect = false 

     // Clear all the selected assets if you used the picker controller as a single instance. 
     //  pickerController.defaultSelectedAssets = nil 

     pickerController.defaultSelectedAssets = self.assets 

     pickerController.didSelectAssets = { [unowned self] (assets: [DKAsset]) in 
      print("didSelectAssets") 


    } 
    self.presentViewController(pickerController, animated: true) {} 

请指导,谢谢离子推进。

+0

你有什么SOFAR做了什么? –

+0

你必须及时回复。这样你就可以得到你的答案。 –

+0

张贴到目前为止,我已经尝试了很多使用Google搜索。共享一个链接,我也试图遵循。 https://github.com/zhangao0086/DKImagePickerController/issues/122 –

回答

1

尝试此功能。它为我工作。

func showImagePickerWithAssetType 
    (
    assetType: DKImagePickerControllerAssetType, 
    allowMultipleType: Bool, 
    sourceType: DKImagePickerControllerSourceType = [.Camera, .Photo], 
    allowsLandscape: Bool, 
    singleSelect: Bool) { 

     let pickerController = DKImagePickerController() 
     pickerController.assetType = assetType 
     pickerController.allowsLandscape = allowsLandscape 
     pickerController.allowMultipleTypes = allowMultipleType 
     pickerController.sourceType = sourceType 
     pickerController.singleSelect = singleSelect 
     //   pickerController.showsCancelButton = true 
     //   pickerController.showsEmptyAlbums = false 
     //   pickerController.defaultAssetGroup = PHAssetCollectionSubtype.SmartAlbumFavorites 

     // Clear all the selected assets if you used the picker controller as a single instance. 
     //   pickerController.defaultSelectedAssets = nil 
     pickerController.defaultSelectedAssets = self.assets 

     pickerController.didSelectAssets = { (assets: [DKAsset]) in 
      print("didSelectAssets") 

      self.assets = assets 
      if assets.count > 0 { 
       self.cameramoment.titleLabel?.textColor = UIColor.redColor() 
       //self.cameramoment.titleLabel?.alpha = 50 
       //self.cameramoment.titleLabel?.textColor = UIColor(red: 0.0, green: 184.0, blue: 214.0, alpha: 1.0) 
      } 
      else { 
       //self.cameramoment.setImage(UIImage (named: "grey_camera_32x32"), forState: .Normal) 
       self.cameramoment.titleLabel?.textColor = UIColor.lightGrayColor() 
       self.cameramoment.titleLabel?.alpha = 50 
      } 
      self.collectionview.reloadData() 

     } 

     if UI_USER_INTERFACE_IDIOM() == .Pad { 
      pickerController.modalPresentationStyle = .FormSheet; 
     } 

     self.presentViewController(pickerController, animated: true) {} 
} 

像这样调用这个函数。

self.showImagePickerWithAssetType(DKImagePickerControllerAssetType.AllPhotos, allowMultipleType: true, allowsLandscape: true, singleSelect: false) 

self.assets是定义为,

var assets: [DKAsset] = [] 

要从DKAsset获得图像。尝试这个。

for asset in assets { 
    asset.fetchImageWithSize(requiredImageSize, completeBlock: { image, info in 
      if let img = image { 
       let fixOrientationImage=img.fixOrientation() 
       cell.postmomentimage1.image = fixOrientationImage 
      } 
    }) 
} 
+0

崩溃在self.assets =资产 –

+0

什么是错误? –

+0

访问密码错误= 1 –

0
import Foundation 
import UIKit 
import DKImagePickerController 

class addPhotoViewController: UIViewController { 

var assets:[DKAsset] = [] 
var pickerController: DKImagePickerController! 

@IBOutlet weak var selectedPhoto: UIImageView! 

@IBAction func sec(_ sender: Any) { 

    let pickerController = DKImagePickerController() 
    pickerController.singleSelect = true 

    pickerController.didSelectAssets = { (assets: [DKAsset]) in 
     print("didSelectAssets") 
     print(assets) 
     for asset in assets { 
      asset.fetchOriginalImage(true, completeBlock: { image, info in 
       if let img = image { 
        let fixOrientationImage=img 
        print(fixOrientationImage) 
        print(info) 
        self.selectedPhoto.image = fixOrientationImage 
       } 
      }) 
     } 
    } 
    self.present(pickerController, animated: true) {} 
    } 
}