我是iOS的新手,我不知道该怎么做,我想像配置文件编辑动画一样实现火种。
例如,
我可以将图像拖到其他UIImageView
或UICollectionView
中,并将收藏项拖到Main UIImageView
中。
我已经实现了LongGestureListener
的UICollectionView
,但是我只能在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/