将图像从UICollectionView拖放到UIView?

时间:2016-11-16 04:56:21

标签: swift uicollectionview uipangesturerecognizer uistackview

是否可以将图像从collectionViewCell拖动到UIView?

我正在创建一个游戏,用户可以在下一个VC中选择要玩的项目。我将每个项目表示为图像,用户可以通过将图像拖动到屏幕底部来选择每个项目。 然后图像将重置为其原始位置。

如果我的代码中有UICollectionView函数,在UIViewCollectionView类中选择的图像都正确设置...我需要包含什么才能将图像从上半部分(在CollectionView内)移动到下半部分(在UIView内。)

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

let Cell:BackpackCollectionVC = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! BackpackCollectionVC
    Cell.backpackImage.image = UIImage(named: self.resultString[indexPath.row]["imageName"]!)!

return Cell

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return self.items.count
}

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
}

我可以使用下面的代码在UIView中移动图像。我无法弄清楚如何将其实现到UIViewCollectionView ...

在ViewDidLoad中:

    let imageGesture = UIPanGestureRecognizer(target: self, action: #selector(self.imageInUIViewDragged(gestureRecognizer:)))
    uiviewImage.isUserInteractionEnabled = true
    uiviewImage.addGestureRecognizer(imageGesture)

func imageInUIViewDragged(gestureRecognizer: UIPanGestureRecognizer) {

    let translation = gestureRecognizer.translation(in: view)
    let uiviewImage = gestureRecognizer.view!

    //self.view.bounds.width -
    uiview.center = CGPoint(x: 52 + translation.x, y: 66 + translation.y)

    if gestureRecognizer.state == UIGestureRecognizerState.ended {

            if (uiviewImage.center.x > 100  && uiviewImage.center.x < self.view.bounds.width - 100)  && (uiviewImage.center.y > self.view.bounds.height / 2  && uiviewImage.center.y < self.view.bounds.height - 100) { {

                print("Item has been selected")

            } else {

                print("Not in backpack")
            }
            //self.view.bounds.width -
            uiviewImage.center = CGPoint(x: 52, y: 66)
        }
    }
}

如果这不可能......

我正在考虑使用StackView并为20个项目设置水平滚动视图? 唯一的问题是如果我隐藏用户的某些项目,则会调整宽度以适合StackView。它看起来很糟糕,我不知道如何阻止宽度扩大。

感谢您的帮助。

0 个答案:

没有答案