我目前正在学习Swift的基础知识,刚刚完成了iOS Application Development Tutorial from the Apple Developer website。
我想创建一个滑动手势,它与目前最流行的应用程序非常相似。向右滑动以显示左侧另一个视图中的内容,基本上是“后退”。按钮,但用手势代替。
Apple的教程解释了取消按钮在导航控制器中的工作原理:
//MARK: Navigation
@IBAction func cancel(_ sender: UIBarButtonItem) {
// Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways.
let isPresentingInAddMealMode = presentingViewController is UINavigationController
if isPresentingInAddMealMode {
dismiss(animated: true, completion: nil)
}
else if let owningNavigationController = navigationController {
owningNavigationController.popViewController(animated: true)
}
else {
fatalError("The MealViewController is not inside a navigation controller.")
}
}
所以(参考Apple的教程)我在' New Meal'上放置了一个 Swipe Gesture Recogniser 对象。控制器并创建了我自己的'rightSwipe'功能完全相同:
@IBAction func rightSwipe(_ sender: UISwipeGestureRecognizer) {
// Depending on style of presentation (modal or push presentation), this view controller needs to be dismissed in two different ways.
let isPresentingInAddMealMode = presentingViewController is UINavigationController
if isPresentingInAddMealMode {
dismiss(animated: true, completion: nil)
}
else if let owningNavigationController = navigationController {
owningNavigationController.popViewController(animated: true)
}
else {
fatalError("The MealViewController is not inside a navigation controller.")
}
}
这很有效,目前的应用程序非常聪明,可以识别您的条目。到视图(是否通过点击列表中的现有项目或通过“创建新项目”视图)。
现在可以用手指控制动画,而不是在屏幕向右滑动后立即执行整个动画吗?这有点难以解释......
一旦向右滑动,动画就会被执行并且当前视图被解除。直到结束,我无法控制动画。我无法动画解雇'我用手指将它拖过屏幕。
我想解释的场景非常类似于iOS主屏幕上的切换页面。
我希望能够持有'左边的屏幕,能够向下拖动它,同时按住,并且应该能够像我一样看到前一个视图,然后在我放手时立即执行视图的实际转换。我希望你理解我的意思?
如何实现这一目标?目前有什么内容可以让我这样做吗?有人能告诉我这是怎么做到的吗?
我目前正在使用Swift 3并使用Xcode9-beta IDE