[英]Drag and Drop UITableViewCell which contains custom UIView in cell.content
I am newbie on this, as titled, would like to implement custom drag & drop in UITableView
, while each UITableViewCell
content (cell.content?) will contains a custom UIView
. 我是这个的新手,标题是要在UITableView
实现自定义拖放,而每个UITableViewCell
内容(cell.content?)将包含一个自定义UIView
。 Eg Row1-cell-CustomUIView1, Row2-cell-CustomUIView2. 例如,Row1-cell-CustomUIView1,Row2-cell-CustomUIView2。 Which custom UIView
added to which row is based on user selection on that row and a button click. 哪个自定义UIView
添加到了哪一行是基于该行上用户的选择并单击按钮。 Now imagine you have 4 custom UIViews
, ie being added into 4 rows/cells in the UITableView
and how can I implement the drag and drop of these CustomUIView
? 现在,假设您有4个自定义UIViews
,即被添加到UITableView
中的4行/单元格中,我如何实现这些CustomUIView
的拖放? Note, each custom UIView may not be the same as typical table cell. 请注意,每个自定义UIView可能与典型的表格单元格不同。 ie custom UIView1 layout/design is different from custom UIView2
. 即自定义UIView1布局/设计与自定义UIView2
不同。 Implement in swift, Any idea? 快速实施,有什么想法吗?
This may help you, add a UIPanGestureRecognizer to the mainImgView to handle the dragging: 这可以为您提供帮助,将UIPanGestureRecognizer添加到mainImgView来处理拖动:
var draggableImage : UIImageView!
var mainImgView : UIImageView!
var trashImgView : UIImageView!
var dragStartPositionRelativeToCenter : CGPoint?
var panGesture : UIPanGestureRecognizer!
panGesture = UIPanGestureRecognizer(target: self, action: "handleDrag:")
mainImgView.addGestureRecognizer(panGesture)
func handleDrag(nizer: UIPanGestureRecognizer!) {
if nizer.state == UIGestureRecognizerState.Began {
self.draggableImage = UIImageView(image: mainImgView.image)
self.draggableImage.frame = CGRectMake(0, 0, 100, 100)
self.draggableImage.center = mainImgView.center
self.draggableImage.contentMode = .ScaleAspectFit
self.draggableImage.userInteractionEnabled = true
self.draggableImage.alpha = 0.5
self.view.addSubview(self.draggableImage)
self.view.bringSubviewToFront(sself.draggableImage)
let locationInView = nizer.locationInView(self.draggableImage.superview)
dragStartPositionRelativeToCenter = CGPoint(x: locationInView.x - self.draggableImage.center.x, y: locationInView.y - self.draggableImage.center.y)
self.draggableImage.layer.shadowOffset = CGSize(width: 0, height: 20)
self.draggableImage.layer.shadowOpacity = 0.3
self.draggableImage.layer.shadowRadius = 6
return
}
if nizer.state == UIGestureRecognizerState.Changed {
let locationInView = nizer.locationInView(self.draggableImage.superview)
UIView.animateWithDuration(0.1) {
self.draggableImage.center = CGPoint(x: locationInView.x - self.dragStartPositionRelativeToCenter!.x,
y: locationInView.y - self.dragStartPositionRelativeToCenter!.y)
}
var checkAddToBag : Bool = CGRectContainsRect(self.draggableImage.frame, self.trashImgView.frame)
if (checkAddToBag == true){
self.trashImgView.layer.borderColor = UIColor.redColor().CGColor
self.trashImgView.layer.borderWidth = 1.0
} else {
self.trashImgView.layer.borderColor = UIColor.clearColor().CGColor
self.trashImgView.layer.borderWidth = 0.0
}
return
}
if nizer.state == UIGestureRecognizerState.Ended {
var checkAddToBag : Bool = CGRectContainsRect(self.draggableImage.frame, self.trashImgView.frame)
self.trashImgView.layer.borderColor = UIColor.clearColor().CGColor
self.trashImgView.layer.borderWidth = 0.0
dragStartPositionRelativeToCenter = nil
self.draggableImage.removeFromSuperview()
self.draggableImage = nil
return
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.