什么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 中谈论新的应用程序拆分视图)
感兴趣的问题的各个方面
- 是否有可以执行此操作的现有 IOS 控件?
- 是否有人们使用的知名图书馆?
- 这个概念(如果你自己做的话)可能是这样做的:
- 为容器视图中的所有视图设置自动布局约束(见下文)
- 将 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:
()
}
}
}
问题
推荐什么 IOS 方法(或者是否有一个我不知道的 IOS 控件)以允许用户在两个 UIView 之间拖动 spit上下?
假设屏幕顶部有视图 A,底部有视图 B(在容器视图中),然后允许用户向上或向下拖动水平分割点的能力。 (所以为了清楚起见,我在这里不是在谈论 iPad/IOS 拆分视图控制器,也不是在 IOS9 中谈论新的应用程序拆分视图)
感兴趣的问题的各个方面
- 是否有可以执行此操作的现有 IOS 控件?
- 是否有人们使用的知名图书馆?
- 这个概念(如果你自己做的话)可能是这样做的:
- 为容器视图中的所有视图设置自动布局约束(见下文)
- 将 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:
()
}
}
}