ios – 使用UINavigationController在UIPageViewController中下
更新2
我一直在使用4英寸设备在iOS模拟器中运行和测试我的应用程序.如果我使用3.5英寸设备运行,标签不会跳转.在我的.xib中,在Simulated Metrics下,我将它设置为Retina 4英寸全屏.知道为什么我只在4英寸设备上看到这个问题吗? 更新1 在IB中,如果我在模拟指标中选择“导航栏”,我的标签仍然会跳转.我可以在第一个屏幕上正确呈现标签的唯一方法是不将导航控制器设置为我的窗口的根视图控制器. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 我的窗口的rootViewController被设置为一个UINavigationController,其rootViewController嵌入了一个UIPageViewController. 当我的应用加载时,会显示初始视图,其内容会向下推一点,大小与导航栏大致相同.当我滚动pageViewController时,内容会跳转到它在nib中的位置,而pageViewController加载的所有其他viewControllers都可以. 在我的appDelegate中: self.window.rootViewController = [[UINavigationController alloc] initWithRootViewController:[ContainerViewController new]]; 在ContainerViewController中: - (void)viewDidLoad { [super viewDidLoad]; self.pvc = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; self.pvc.dataSource = self; self.pvc.delegate = self; DetailViewController *detail = [DetailViewController new]; [self.pvc setViewControllers:@[detail] direction:UIPageViewControllerNavigationDirectionForward animated:false completion:nil]; [self addChildViewController:self.pvc]; [self.view addSubview:self.pvc.view]; [self.pvc didMoveToParentViewController:self]; } 解决方法
所以我在进一步开发后又添加了另一个答案,我终于想到了我发现了什么.好像在iOS7中,UIPageViewController似乎有自己的UIScrollView.因此,您必须将automaticAdjustsScrollViewInsets设置为false.这是我的viewDidLoad现在:
- (void)viewDidLoad { [super viewDidLoad]; self.automaticallyAdjustsScrollViewInsets = false; DetailViewController *detail = [[DetailViewController alloc] init]; [self setViewControllers:@[detail] direction:UIPageViewControllerNavigationDirectionForward animated:false completion:nil]; } 无需在viewWillLayoutSubviews中添加任何内容(作为我之前建议的答案之一). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |