Ort*_*ntz 4 iphone cocoa-touch statusbar uinavigationcontroller ios
我想使用幻灯片效果同时显示和隐藏statusBar和navigationBar.
这是我尝试的方式:
[[UIApplication sharedApplication] setStatusBarHidden:hide withAnimation:UIStatusBarAnimationSlide];
[self.navigationController setNavigationBarHidden:hide animated:animated];
Run Code Online (Sandbox Code Playgroud)
但是,两个动画的持续时间并不相同.状态栏动画需要更长时间.我发现无法如何指定任何一个动画的持续时间.我错过了一些明显的东西吗
ios-lizard的答案几乎就是我想要的,但除非hidden设置正确,否则导航栏会在旋转设备时重新出现.所以这对我有用:
Hidding动画作品/看起来不错YEAH !!
显示动画是可以的,(我希望我可以使用导航栏使状态栏滑动,但至少我们不再看到间隙了.:D)
- (void)toggleFullscreen {
UINavigationBar *navBar = self.navigationController.navigationBar;
CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
float animationDuration;
if(statusBarFrame.size.height > 20) { // in-call
animationDuration = 0.5;
} else { // normal status bar
animationDuration = 0.6;
}
_fullscreen = !_fullscreen;
if (_fullscreen) {
// Change to fullscreen mode
// Hide status bar and navigation bar
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:animationDuration animations:^{
navBar.frame = CGRectMake(navBar.frame.origin.x,
-navBar.frame.size.height,
navBar.frame.size.width,
navBar.frame.size.height);
} completion:^(BOOL finished) {
[self.navigationController setNavigationBarHidden:YES animated:NO];
}];
} else {
// Change to regular mode
// Show status bar and navigation bar
[[UIApplication sharedApplication] setStatusBarHidden:NO
withAnimation:UIStatusBarAnimationSlide];
[UIView animateWithDuration:animationDuration animations:^{
navBar.frame = CGRectMake(navBar.frame.origin.x,
statusBarFrame.size.height,
navBar.frame.size.width,
navBar.frame.size.height);
} completion:^(BOOL finished) {
[self.navigationController setNavigationBarHidden:NO animated:NO];
}];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8993 次 |
| 最近记录: |