2013-12-19 39 views
8

所以,我從UICollecionView項目點擊到UIPageViewController的segue。當PageViewController顯示時,導航欄變成深灰色,其中的UIView有一個奇怪的偏移量。 但是,當我在屏幕上的任何地方點擊一次後,我看到一個奇怪的「動畫」,UIView移動到正確的位置。 因此,屏幕上的所有視圖都會移動。UIPageViewController子視圖在屏幕水龍頭之後移動到狀態欄後面

這裏是這個錯誤的鏈接,5秒的視頻:http://www.youtube.com/watch?v=CNbwBGvSzIk

PageViewController.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.title = [[[EVAEvent events] objectAtIndex:self.currentIndex] name]; 
    self.dataSource = self; 
    self.delegate = self; 
    UIViewController *vc = [self viewControllerAtIndex:self.currentIndex]; 
    NSArray *controllers = [NSArray arrayWithObjects:vc, nil]; 
    [self setViewControllers:controllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 
} 

- (UIViewController *)viewControllerAtIndex:(NSUInteger)index; 
{ 
// NSLog(@"View Controller At Index = %lu", (unsigned long)self.currentIndex); 
    EVAEventInfoViewController *controller = [EVAEventInfoViewController getFromStoryboard]; 
    EVAEvent *event = [[EVAEvent events] objectAtIndex:index]; 
    [controller setIndex:index]; 
    [controller setEvent:event]; 
    return controller; 
} 

EVAEventInfoViewController.m:

+ (EVAEventInfoViewController *) getFromStoryboard 
{ 
    //NSLog(@"Creating EVAEventInfoViewController"); 
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil]; 
    EVAEventInfoViewController *this = (EVAEventInfoViewController *)[sb instantiateViewControllerWithIdentifier:@"eventInfoController"]; 
    return this; 
} 

非常感謝!

回答

23

嘗試加入

self.automaticallyAdjustsScrollViewInsets=NO; 

PageViewController的viewDidLoad

+0

在Swift iOS 8.1上爲我工作。使用此代碼'self.automaticallyAdjustsScrollViewInsets = false' – MBH

+0

非常感謝你:) –

+0

Xcode 8.2.1,Swift 3:我的工作是將故事板上的「Adjust Scroll View Insets」設置爲false。不過,你的提示很有幫助。 – Leandro

1

我設置UIPageViewController和副視點控制器 self.automaticallyAdjustsScrollViewInsets=NO;但它不工作,如果的UITabBarController爲根。

我拍攝的景物的層次結構如下enter image description here enter image description here

你可以看到UIPageViewControllerContentView是正確的位置(0,0)。但是 在_UIQueuingScrollView下的UIView生成了狀態欄的偏移量。

所以,我決定不使用UIPageViewController。我使用self.view addSubView來解決這個問題。

- (void)loadVC:(UIViewController*)vc 
{ 
    [self addChildViewController:vc]; 
    vc.view.frame = self.view.bounds; 
    [self.view addSubview:vc.view]; 
} 
相關問題