我是iOS的新手,我不知道该怎么做,我想像配置文件编辑动画一样实现火种。

例如,

我可以将图像拖到其他UIImageViewUICollectionView中,并将收藏项拖到Main UIImageView中。

我已经实现了LongGestureListenerUICollectionView,但是我只能在UICollectionView Items之间拖放项目。

提前致谢。

最佳答案

用于快速4.2

  • 图像来自上一个控制器

  • 导入UIKit

    private 让重用Identifier =“单元格”

    类MyRoomCollectionViewController:UICollectionViewController,UICollectionViewDelegateFlowLayout {
    var images:[UIImage]=[]
    var screenSize: CGRect!
    var screenWidth: CGFloat!
    fileprivate var longPressGesture: UILongPressGestureRecognizer!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        collectionView.allowsMultipleSelection=true
    
        screenSize = UIScreen.main.bounds
        screenWidth = screenSize.width-6
    
        let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 10, left: 1, bottom: 10, right: 1)
        layout.itemSize = CGSize(width: screenWidth/3, height: screenWidth/3)
        layout.minimumInteritemSpacing = 1.5
        layout.minimumLineSpacing = 1.5
        collectionView!.collectionViewLayout = layout
    
        longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongGesture(gesture:)))
        collectionView.addGestureRecognizer(longPressGesture)
    }
    override func numberOfSections(in collectionView: UICollectionView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }
    
    
    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of items
        return images.count
    }
    
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! RoomCollectionViewCell
    
        cell.img.image=images[indexPath.row]
    
        return cell
    }
    
    override func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool
    {
        return true
    }
    override func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
    {
        //print("Starting Index: \(sourceIndexPath.item)")
        //print("Ending Index: \(destinationIndexPath.item)")
        let temp=images[sourceIndexPath.item]
        images.remove(at: sourceIndexPath.item)
        images.insert(temp, at: destinationIndexPath.item)
        self.collectionView.reloadData()
    }
    @objc func handleLongGesture(gesture: UILongPressGestureRecognizer) {
        switch(gesture.state) {
    
        case .began:
            guard let selectedIndexPath = collectionView.indexPathForItem(at: gesture.location(in: collectionView)) else {
                break
            }
            collectionView.beginInteractiveMovementForItem(at: selectedIndexPath)
        case .changed:
            collectionView.updateInteractiveMovementTargetPosition(gesture.location(in: gesture.view!))
        case .ended:
            collectionView.endInteractiveMovement()
        default:
            collectionView.cancelInteractiveMovement()
        }
    }
    @IBAction func arrangeIt(_ sender: Any) {
        performSegue(withIdentifier: "videosegue", sender: self)
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let dest=segue.destination as! VideoMakerViewController
        dest.images=images
    }
    

    }

    关于ios - 如何将Swift中的ImageView拖到CollectionView中,如何将CollectionView项拖到ImageView中,例如火种应用程序配置文件编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50772776/

    10-13 03:46