ios - 使用 pangesture 在父 View 中移动 UIView

标签 ios objective-c

我想在父 View 中移动一个 View ,我正在使用 UIPanGestureRecognizer 移动 View 。我正在使用以下代码。

-(void)move:(UIPanGestureRecognizer *)recognizer {
    CGPoint touchLocation = [recognizer locationInView:self.customeView];

    self.view.center = touchLocation;
}

我想使用 locationInView 来移动 View 而不是 translationInView。谁能帮助我如何使用 locationInView 在父 View 中移动 View ?

最佳答案

UIPanGestureRecognizer 您走在正确的轨道上。您可能缺少开始和结束手势状态处理。这是一个完整的解决方案,我刚刚在示例项目 (Swift) 中将 panView 作为 View Controller Root View 的子类放在一起。

class ViewController: UIViewController {

    @IBOutlet weak var panView: UIView!

    // records the view's center for use as an offset while dragging
    var viewCenter: CGPoint!

    override func viewDidLoad() {
        super.viewDidLoad()
        panView.addGestureRecognizer(UIPanGestureRecognizer(target: self, action: #selector(self.dragView)))
    }

    func dragView(gesture: UIPanGestureRecognizer) {
        let target = gesture.view!

        switch gesture.state {
        case .began, .ended:
            viewCenter = target.center
        case .changed:
            let translation = gesture.translation(in: self.view)
            target.center = CGPoint(x: viewCenter!.x + translation.x, y: viewCenter!.y + translation.y)
        default: break
        }
    }

}

关于ios - 使用 pangesture 在父 View 中移动 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41032492/

相关文章:

objective-c - 如何将@class 前向声明翻译成 Swift?

ios - 下载 Firestore 数据时暂停

iphone - 如何控制 UINavigationBar 标题中的标题字体

objective-c - 禁用所有按钮直到加载完成?

objective-c - 当 ICScannerFunctionalUnit 设置为黑白扫描时,ImageCaptureCore 错误 -9933

objective-c - 在 Objective C 中使用带有重载方法的 Swift 类

ios - 每次 utableview 重新加载时,单元格按钮都会不断创建新的

javascript - PhoneGap : Notify on Javascript Update

ios - 将 CALayer 移动到另一个 View 或更改 CALayer.contents,哪个更有效?

ios - 更新单元格时 UITableView 行分隔符被截断