Ios 用'向右滑动手势;手指控制';
我刚刚完成课程,目前正在学习Swift的基本知识 我想创建一个与目前最流行的应用程序非常相似的滑动手势。向右滑动可从左侧的另一个视图中显示内容,本质上是一个“后退”按钮,但需要一个手势 下面是我找到的一张我想要创建的手势图像: Apple的教程解释了“取消”按钮在导航控制器中的工作原理:Ios 用'向右滑动手势;手指控制';,ios,swift,xcode,swift3,xcode9-beta,Ios,Swift,Xcode,Swift3,Xcode9 Beta,我刚刚完成课程,目前正在学习Swift的基本知识 我想创建一个与目前最流行的应用程序非常相似的滑动手势。向右滑动可从左侧的另一个视图中显示内容,本质上是一个“后退”按钮,但需要一个手势 下面是我找到的一张我想要创建的手势图像: Apple的教程解释了“取消”按钮在导航控制器中的工作原理: //MARK: Navigation @IBAction func cancel(_ sender: UIBarButtonItem) { // Depending on style of p
//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.")
}
}
因此(参考苹果的教程),我在“New Dine”控制器上放置了一个滑动手势识别器对象,并创建了我自己的“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,当您在导航堆栈上按下视图控制器时,您应该可以免费获得这种滑动行为。我昨天的回答太快了,所以我把它删掉了。请解释为什么默认iOS行为对您不起作用/不够好。摘自问题本身:“只要我向右滑动,动画就会执行,当前视图将被取消。在动画结束之前,我无法控制它。我无法用手指在屏幕上拖动“解雇”动画。我想解释的场景与在iOS主屏幕上切换页面的工作原理非常相似。“我现在明白了。当然,当您从屏幕左边缘开始拖动时,您可以从iOS获得这种效果。我只是尝试了我先前的建议,但那不起作用,因为下面的视图不会显示出来;你只看到一个白色的背景。另外,你不会在导航栏上看到iOS那样的透明动画,所以如果它真的起作用的话,它看起来也会很糟糕。我的结论是你不能/不应该这样做。您必须使用自定义导航堆栈(您可能会找到一些)。你可能会浪费很多时间去做定制的东西。