我有一个表视图控制器和另一个视图控制器。现在我的要求是当我滑动视图控制器时,我需要将表视图控制器滑过另一个视图控制器一半。我可以显示的图像是这样的:
是否可以通过使用Swipegesture实现此目的。如果可能的话,我怎么能在Swift3中做到这一点?
答案 0 :(得分:3)
虽然有些图书馆会为你做这件事,但如果你打算自己这样做,基本的想法是你可以创建一个"从边缘滑动"手势识别器启动视图控制器的自定义显示(其上有菜单)。它包括:
自定义转换委托(符合UIViewControllerTransitioningDelegate
协议),指定在下一个场景的呈现期间使用的动画控制器和交互控制器(均在下面描述);
一个动画控制器(符合UIViewControllerAnimatedTransitioning
),用于指示右边缘的场景动画;
一个交互控制器(UIPercentDrivenInteractiveTransition
),您可以使用它来选择性地通过手势驱动转换;
一个表示控制器(一个UIPresentationController
子类),它指示是否删除所呈现的视图(在这种情况下,您不希望它被删除),以及任何其他要动画的chrome与新场景的动画演示一起(例如,您经常调暗或模糊呈现视图);以及
用于驱动交互控制器的手势识别器。
有关详细信息,请参阅WWDC视频Custom Transitions Using View Controllers和A Look Inside Presentation Controllers。
有关呈现以下UX的Swift 3示例,请参阅https://github.com/robertmryan/SwiftCustomTransitions/tree/rightside:
这一切都很复杂,你可能想要考虑使用第三方库来呈现滑入式菜单。但是,如果你想要自己推动自己的",这些是所涉及的基本部分。
答案 1 :(得分:1)
我要做的是首先创建并隐藏UIView
,让您在屏幕右侧选择UIViewController
并为其设置动画以显示用户滑动的时间。
然后,您实现此方法,该方法返回UIViewControllerAnimatedTransitioning
,这是您要为自定义转换实现的类。
- (id<UIViewControllerAnimatedTransitioning>)
navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController*)fromVC
toViewController:(UIViewController*)toVC
这可能是自定义转换的一个很好的教程。 https://www.raywenderlich.com/110536/custom-uiviewcontroller-transitions
答案 2 :(得分:1)
我会调查SWRevealViewController。它只需几行代码即可为您提供所需的行为。您可以展示一个SWRevealViewController
,其中包含顶部和底部 UIViewController
,并将其显示为您的场景。
// Your Front View Controller
let frontStoryboard = UIStoryboard(name: "FrontStoryboard", bundle: .main)
let frontVC = frontStoryboard.instantiateInitialViewController()
// Your Rear View Controller
let rearStoryboard = UIStoryboard(name: "RearStoryboard", bundle: .main)
let rearVC = rearStoryboard.instantiateInitialViewController()
// Create Reveal View Controller From Both
if let revealVC = SWRevealViewController(rearViewController: rearVC, frontViewController: frontVC) {
present(revealVC, animated: true) {
}
}
使用SWRevealViewController
,您可以设置UIViewController
作为frontViewController
进行滑动的rearViewController
,您只需使用一行代码即可显示// When you import SWRevealViewController every UIViewController
// has a method revealViewController() that returns the revealViewController
// that you can tell to toggle it's reveal state using the below
self.revealViewController().revealToggle(animated: true)
代码。
{{1}}
修改强>
我相信你正在尝试构建一个滑动导航菜单。这是指向Ray Wenderlich教程的链接,他正在创建您正在寻找的导航。