我有一個很多文字的視圖,所以我想讓用戶在單擊時隱藏statusBar + navigationBar。我非常喜歡Pictures應用中的隱藏風格,其中statusBar和navigationBar隱藏在一起(不滑動,只是淡出),以及一些animationDuration,所以我試圖做這樣的事情。這裏是我在touchDidBegan方法中做的:同時隱藏狀態欄和導航欄,如圖片應用
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
[UIView setAnimationDuration:0.5];
[UIView beginAnimations:@"" context:nil];
[[UIApplication sharedApplication] setStatusBarHidden:!([UIApplication sharedApplication].statusBarHidden) withAnimation:UIStatusBarAnimationNone];
[self.navigationController setNavigationBarHidden:(!self.navigationController.navigationBarHidden) animated:NO];
[UIView commitAnimations];
self.navigationController.navigationBar.translucent = !self.navigationController.navigationBar.translucent; // this is needed to make bars appear on top of my view.
}
但是這並不能同時隱藏酒吧。它使他們滑下來。它具有與該型式的方法的上述同樣的效果:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
// deleted UIView animation, changed animation type to "slide"
[[UIApplication sharedApplication] setStatusBarHidden:!([UIApplication sharedApplication].statusBarHidden) withAnimation:UIStatusBarAnimationSlide];
// enabled animation for navBar
[self.navigationController setNavigationBarHidden:(!self.navigationController.navigationBarHidden) animated:YES];
self.navigationController.navigationBar.translucent = !self.navigationController.navigationBar.translucent; // this is needed to make bars appear on top of my view.
}
如果我甩掉的UIView動畫和隱藏,沒有動畫吧,他們確實隱藏和同時出現的,但過快。我可能會走錯方向。如果有人能幫我解決這個問題,我將不勝感激。
編輯:得到了它的工作
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
// don't forget to set navigationBar.translucent to YES
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
[UINavigationBar setAnimationDuration:3.0];
[UINavigationBar beginAnimations:@"" context:nil];
[[UIApplication sharedApplication] setStatusBarHidden:!([UIApplication sharedApplication].statusBarHidden) withAnimation:NO];
if ([UIApplication sharedApplication].isStatusBarHidden)
[self.navigationController.navigationBar setAlpha:0.0];
else [self.navigationController.navigationBar setAlpha:1.0];
[UINavigationBar commitAnimations];
}
我通過自己的SRC看了一下,發現隱藏/顯示處理方法中的src/KTPhotoBrowser/KTPhotoScrollViewController.m 他們也換了狀態欄和導航欄隱藏到UIView的動畫。但是,不是將navigationBarHidden設置爲YES,而是將navigationBar的alpha值從1.0更改爲0.0。只需要保持navigationBar.transulent = YES。我猜setNavigationBarHidden:animated:方法啓用自己的動畫時,包裝到UIView動畫(導致異步bw statusbar和navigationBar)。不過謝謝。 – AzaFromKaza 2013-03-05 05:57:33
做得好我的朋友,你很好! – 2013-03-05 06:03:27