我正在创建一个应用程序,我有多个不同的屏幕可以执行不同的操作。我把它全部用在UINavigationController中的pop / push。
布局就是这样的。灰色是每个" uiviewcontroller",矩形是背景图片的一部分,RGB是'内容'在每个uiviewcontroller中。
我想让所有不同的屏幕看起来都在同一个空间"。喜欢下一张图片。
我一直在玩自定义赛段,而且"有点"作品。它删除了" push" /" pop"视觉和动画都很流畅,如果背景是一种颜色,它的效果很好。但情况并非如此,实际上我的背景会有一个动画,它旋转的速度非常慢。
那我该怎么办呢?
我尝试或想过的事情
我已经在这个问题上待了好两天,但我不确定如何最好地解决这个问题。
编辑:我使用了下面的UIPageViewController解决方案,这是结果" app"。
答案 0 :(得分:1)
您是否尝试过使用UIPageViewController?如果你想用滑动手势改变UIViewController,它就是答案。它'可从iOS 6获得。
RootVC.h
@interface RootVC : UIPageViewController
@end
RootVC.m
@interface RootVC () <UIPageViewControllerDelegate, UIPageViewControllerDataSource>
{
NSArray *_viewControllers;
}
@end
@implementation RootVC
- (void)viewDidLoad
{
[super viewDidLoad];
LeftViewController *lv = [[LeftViewController alloc] init];
CenterViewController *cv = [[CenterViewController alloc] init];
RightViewController *rv = [[RightViewController alloc] init];
_viewControllers = @[lv, cv, rv];
[self setViewControllers:@[cv] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
}];
[self setDelegate:self];
[self setDataSource:self];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
NSInteger index = [_viewControllers indexOfObject:viewController];
if(index > 0)
{
index--;
return [_viewControllers objectAtIndex:index];
}
else
{
return nil;
}
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
NSInteger index = [_viewControllers indexOfObject:viewController];
if(index < 2)
{
index++;
return [_viewControllers objectAtIndex:index];
}
else
{
return nil;
}
}
答案 1 :(得分:0)
您是否尝试将视图控制器放在容器视图中?也许它会满足你的需求。
答案 2 :(得分:0)
您不需要三个UIViewControllers。