0

问题

推荐什么 IOS 方法(或者是否有一个我不知道的 IOS 控件)允许用户在两​​个 UIView 之间上下拖动吐痰?

假设屏幕顶部有视图 A,底部有视图 B(在容器视图中),然后允许用户向上或向下拖动水平分割点。(所以为了清楚起见,这里我不是在谈论 iPad/IOS 拆分视图控制器,也不是 IOS9 中的新应用程序拆分视图)

感兴趣的问题的各个方面

  1. 是否有现有的 IOS 控件可以做到这一点?
  2. 是否有人们为此使用的知名图书馆?
  3. 是这个概念(如果你自己做的话)可能会这样做:
    • 为容器视图中的所有视图设置自动布局约束(见下文)
    • 将grabHandle约束设置为距顶部的给定距离
    • 将顶视图设置为底部取决于grabHandle 的位置,底部视图的顶部相同
    • 将gestureHandler添加到grabHandler,然后当它以某种方式移动时将位置传递回UI容器视图,其中......
    • 它通过更改“grabHandleDistanceFromTheTopConstraint”来调整新位置?

这是现在尝试使用自动布局和所有实现这一点的方法吗?

在此处输入图像描述

4

1 回答 1

0

实际上我认为这可能有它(似乎工作正常) - 任何建议/评论?

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var dragHandle: UIView!
    @IBOutlet weak var dragHandleTopConstaint: NSLayoutConstraint!

    var lastLocation:CGPoint = CGPointMake(0, 0)

    override func viewDidLoad() {
        super.viewDidLoad()

        // Allow dragging
        let pan = UIPanGestureRecognizer(target:self, action:"pan:")
        pan.maximumNumberOfTouches = 1
        pan.minimumNumberOfTouches = 1
        self.dragHandle.addGestureRecognizer(pan)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }


    func pan(rec:UIPanGestureRecognizer) {
        switch rec.state {
        case .Began:
            self.lastLocation = self.dragHandle.center
        case .Changed:
            let translation  = rec.translationInView(self.dragHandle)
            let newLocation : CGPoint = CGPointMake(lastLocation.x, lastLocation.y + translation.y)

            self.dragHandleTopConstaint.constant = newLocation.y
        default:
            ()
        }
    }

}

在此处输入图像描述

于 2015-10-25T05:30:47.957 回答