ios - 快速拖动 subview 以删除特定位置

标签 ios swift uiview subview

我正在尝试找出一种在到达某个位置时拖动和删除 subview 的方法。到目前为止,我拥有的是一个 View Controller ,我在其中添加了几个 subview 。我的 subview 类是可旋转和可调整大小的,我可以在 View Controller 上移动它们。假设我想将 subview 移动到 View Controller 的顶部中心并将其删除。我的父 View Controller 如何知道 subview 的位置并执行删除? 另一个问题是所有 subview 都是从同一个自定义类生成的。我应该如何定义哪个 subview 是应该删除的 subview ? 预先感谢您。

最佳答案

您可以使用 UIPanGestureRecognizer 来移动 View 和 CGRect.intersects查看新位置是否将您带入删除区域(如果您想要求完全位于删除区域内,请改用 contains):

    @IBAction func pan(_ recognizer: UIPanGestureRecognizer) {
        let translation = recognizer.translation(in: self.view)
        centerXConstraint.constant += translation.x
        centerYConstraint.constant += translation.y
        viewToMove.offset.x += translation.x
        viewToMove.offset.y += translation.y
        if viewToMove.frame.intersects(deletionRect) {
            //Delete logic here
        } else {
            viewToMove.setNeedsDisplay()
            recognizer.setTranslation(.zero, in: self.view)
        }

    }

如果您有多个 View ,您可以使用 UIView.tag 或 Set 来确定哪个 View 是哪个 View 。

关于ios - 快速拖动 subview 以删除特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42280614/

相关文章:

ios - CocoaPods:pod 安装给出 "Errno::E2BIG - Arg list too long"

iphone - 获取自定义 UIView 子类以跟随 UIControl

ios - 发现意外的 Mach-O header 代码 : 0x72613c21 on submitting to App Store

ios - 不使用代码将 xib UIView 添加到 Storyboard View Controller

ios - 使用 Storyboard在 Xcode 6.1.1 中展开 Segue

ios - 在 TableView 中移动行

swift - 无法将类型 'NSURL?' 的值转换为预期参数类型 'URL'

swift - 用于测试的 swift 嵌套函数选择器

ios - 自定义绘制时何时更改 UIView 的框架大小?

ios - 使用动画更改 UIView 背景颜色