我知道我已经问过几次这个问题,但我经验不足,认为我还没有得到正确的答案。
我现在有两个 View Controller ,每个都有一个 .h 文件、一个 .m 文件和一个 .xib 文件。在这两个 .xib 文件中,我都有一个 UIView。我怎样才能让你可以在这两个 View 之间滑动?例如,应用程序在第一个 View 中打开,然后您从右向左滑动,下一个 View 就会出现。我希望在滑动照片时滑动的动画类似于照片应用程序的动画。
最佳答案
虽然您可以自己实现它(使用 custom container view controller 结合 UIPanGestureRecognizer
或 UIScrollView
),但如果使用 iOS 6 及更高版本,最简单的方法是使用一个Page View Controller具有“滚动”过渡样式。
考虑这个 Storyboard:
它由一个页面 View Controller 和两个页面的两个场景组成。页面 1 有一个 Storyboard标识符 one
和一个基类 PageOneViewController
。页面 2 有一个 Storyboard标识符 two
和一个基类 PageTwoViewController
。
然后我写了一个 UIPageViewController
子类(很明显,这是我为上述 Storyboard的第一个场景指定的类),它具有以下代码:
- (void)viewDidLoad
{
[super viewDidLoad];
self.dataSource = self;
[self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[PageOneViewController class]])
return nil;
return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[PageTwoViewController class]])
return nil;
return [self.storyboard instantiateViewControllerWithIdentifier:@"two"];
}
您也可以使用 NIB 执行此操作,但需要编写更多代码。如果您搜索 UIPageViewController XIB
,您可能会得到一些结果。
如果您需要支持 6.0 之前的 iOS 版本,则必须使用平移手势或 ScrollView 的自定义容器方法。
关于ios - 在两个 UIViewControllers 的 View 之间滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18047387/