使用 DKImagePickerController 在滚动视图上显示多个图像

Posted

技术标签:

【中文标题】使用 DKImagePickerController 在滚动视图上显示多个图像【英文标题】:Display multiple images on scrollview by using DKImagePickerController 【发布时间】:2017-12-05 08:14:49 【问题描述】:

当用户使用 DKImagePickerController github 选择图像时,我想在滚动视图上显示多个图像。 这是我的代码,但没有出现图像。任何人都可以告诉什么是错的? 提前谢谢!

    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】:

您可以将图像添加到数组中并重新加载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!

【讨论】:

@Daibaku 让我知道这个答案是否对您有帮助! 谢谢你的回答!!我希望图像像带有页面控制的 instagram。因此,如果用户选择了 10 张照片,则显示这些照片并使用页面控件水平滚动。用collectionview可以吗? @Daibaku 如果你觉得这个答案有帮助,请点赞并标记为关于你的问题的正确 nd:: 是的,我们可以在 collectionView 中启用分页,更多像 instagram 你可以使用 ImageSlideShow github (github.com/zvonicek/ImageSlideshow)通过在数组中使用 for 循环来简化代码 非常感谢,我回家试试!!再次感谢您:)

以上是关于使用 DKImagePickerController 在滚动视图上显示多个图像的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)