如何将可拖动对象放置在目标对象的中心

Posted

技术标签:

【中文标题】如何将可拖动对象放置在目标对象的中心【英文标题】:How to place draggable object in a center of a target object 【发布时间】:2016-11-07 08:59:14 【问题描述】:

我有一个UIView 是目标,还有一个UIImage 是可拖动对象。任务是将UIImage 放在UIView 中(如果它正在触摸它)。

这是我的代码:

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) 
        if let touch = touches.first, let target = dropTarget 
            let position = touch.location(in: self.superview)
            let isOnTarget = target.frame.contains(position)

            if isOnTarget 
                NotificationCenter.default.post(Notification(name: Notification.Name(rawValue:"onTarget")))
                // Make it stay there
                let targetHeight = target.frame.size.height
                let targetWidth = target.frame.size.width
                self.center = CGPoint(x: targetHeight, y: targetWidth)
             else 
                self.center = originalPosition
            
        
    

此代码的问题是UIImage 附加在左下角UIView 之外,它应该在它的中心。

如果它接触到目标,我怎样才能让它保持在目标的中间?

【问题讨论】:

如果 UIView 和 UIImageView 有共同的父视图:self.center = target.center 就是这样!谢谢! 【参考方案1】:

试试:

self.center = CGPoint(x: targetHeight/2, y: targetWidth/2)

【讨论】:

我在第一次尝试时尝试过,但它不起作用。我把图像移到 UIView 之外。

以上是关于如何将可拖动对象放置在目标对象的中心的主要内容,如果未能解决你的问题,请参考以下文章

拖动对象时会跳到中心

在被拖动后如何将可拖动对象保持在其位置?

如何使用 jQuery 将可拖动项目居中放置在可放置的图像地图区域上?

如何将可拖动对象放入 gridster

如何将可拖动的元素放入可排序的元素中,放置的项目不是原始元素而是自定义助手

使用 Convnet 的对象中心检测总是返回图像的中心而不是对象的中心