什么IOS approach/control 用于拖动两个UIView 相交的点? (包括示例模型)

What IOS approach/control for dragging the point two UIViews meet? (example mockup included)

问题

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

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

感兴趣的问题的各个方面

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

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

实际上我认为这可能有(似乎工作正常)-任何 advice/comments?

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:
            ()
        }
    }

}