2015-08-24 80 views
2

我要禁用導航欄動畫狀態欄時,頁面的變化,IOS隱藏與動畫

根的viewController

- (BOOL)prefersStatusBarHidden{ 
    return YES; 
} 
- (void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:YES animated:animated];, 
} 

推的viewController

- (BOOL)prefersStatusBarHidden{ 
    return NO; 
} 
- (void)viewWillAppear:(BOOL)animated{ 
    [super viewWillAppear:animated]; 
    [self.navigationController setNavigationBarHidden:NO animated:animated];, 
} 

如果這兩個網頁statusBarHidden等於否或是這種方法的工作,但當我禁用其中一個問題發生。由於我的聲望很低,我無法上傳圖片,請檢查圖片鏈接。 https://www.facebook.com/photo.php?fbid=154038544933435&set=a.154038594933430.1073741827.100009818700445&type=1&theater

+0

你怎麼推下一個視圖控制器? '[self.navigationController pushViewController:vc animated:NO]' –

+0

like this [[self.navigationController pushViewController:myController animated:YES];' – vayfi

+0

您需要調用[super viewWillAppear:animated];和「動畫:動畫」沒有任何意義,因爲如果你沒有調用超級viewWillApear,那麼這個「antimated」與導航欄 – Loxx

回答

0

你應該在標籤的姿態用這個它的工作對我來說

NSTimer *timer; 
if([UIApplication sharedApplication].statusBarHidden == YES) 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; 
    timer= [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideStatusbar) userInfo:nil repeats:NO]; 
} 

調用方法

-(void)hideStatusbar 
{ 
    [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; 
} 
0

實施prefersStatusBarHidden應該做的伎倆。無需重寫viewWillAppear:animated,因爲iOS會自動從一個狀態欄狀態動畫到下一個狀態欄。

一定要在Info.plist中將「查看基於控制器的狀態欄外觀」設置爲YES。

Set this to YES

至於導航欄而言。如果您使用故事板並使用Segueues,則可以從一個導航控制器切換到另一個導航控制器。如果導航控制器A具有可見的導航欄並且導航控制器B具有隱藏的導航欄,則iOS會自動爲您導航導航欄。