使用DKImagePickerController在scrollview上显示多个图像

时间:2017-12-05 08:14:50

标签: ios swift xcode uiscrollview

当用户使用DKImagePickerController github选择图像时,我想在scrollview上显示多个图像。 这是我的代码,但图片不会出现。任何人都可以说出错了什么? 提前谢谢!

    var picker = DKImagePickerController()
    var imagesArray = [Any]()

     @IBAction func pickPhoto(_ sender: Any) {

            picker.maxSelectableCount = 10
            picker.showsCancelButton = true
            picker.allowsLandscape = false
            picker.assetType = .allPhotos

            self.present(picker, animated: true)

            picker.didSelectAssets = { (assets: [DKAsset]) in

                self.imagesArray.append(assets)

                for i in 0..<self.imagesArray.count {

                    let imageView = UIImageView()
                    imageView.image = self.imagesArray[i] as? UIImage
                    imageView.contentMode = .scaleAspectFit
                    let xposition = self.view.frame.width * CGFloat(i)
                    imageView.frame = CGRect(x: xposition, y: 330, width: self.scrollView.frame.width, height: 170)
                    self.scrollView.contentSize.width = self.scrollView.frame.width * CGFloat(i * 1)
                    self.scrollView.addSubview(imageView)
                }

            }

        }

1 个答案:

答案 0 :(得分:0)

您可以在数组中添加图像并重新加载collectionView / TableView,而不是将图像显示到scrollView。

正如我在collectionView

中所做的那样
func showImagePicker() {
    let pickerController = DKImagePickerController()
    self.previewView?.isHidden = false
    pickerController.assetType = .allPhotos
    pickerController.defaultAssetGroup = .smartAlbumUserLibrary
    pickerController.didSelectAssets = { (assets: [DKAsset]) in
        if  assets.count>0
        {
            for var i in 0 ... assets.count-1 {
                assets[i].fetchOriginalImage(true, completeBlock: { (image, info) in
                        self.abc.append(image)
                })
            }
        }
        self.previewView?.reloadData()
    }
    self.present(pickerController, animated: true) {}
}

这里abc:[UIImage]和previewView? :UICollectionView  并在集合委托方法中:

public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
    return self.abc.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    var cell: UICollectionViewCell?
    var imageView: UIImageView?

    cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CellImage", for: indexPath)
    imageView = cell?.contentView.viewWithTag(1) as? UIImageView
    if let cell = cell, let imageView = imageView
    {
        let tag = indexPath.row + 1
        cell.tag = tag
        imageView.image = self.abc[indexPath.row]
    }
    return cell!
}