我有UIView一个UITabController.其中有一个UITableView.
在呼叫状态栏中切换时,它不会执行任何操作,并且视图不会自动调整大小.
它假定正确的大小取决于UIStatusBar应用程序启动时是否切换,但如果UIStatusBar在应用程序运行时切换,则没有任何更改.
带有a的另一个标签视图UINavigationController似乎调整好了.
这是代码
if ([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1) {
if (!airportChooser) {
airportChooser = [[AirportChooserController alloc] init];
airportChooser.targetController = self;
airportChooser.view.autoresizesSubviews = YES;
airportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
}
airportChooser.target = [indexPath indexAtPosition:0];
[self.parentViewController.parentViewController.view addSubview:airportChooser.view];
self.parentViewController.parentViewController.view.autoresizesSubviews = YES;
self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw;
[self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
airportChooser.view.contentMode = UIViewContentModeRedraw;
//[airportChooser open];
}
我想知道状态栏何时旋转.接收屏幕旋转通知可能会使问题与"正面朝上"和"正面朝下"等方向混淆.因此,根据状态栏的方向管理轮换是最简单,最干净的方法.当方向发生变化时,如何收到通知?
在iOS 7中,状态栏默认为透明.我正在制作一个使用标签的应用.一个标签显示一个简单的UIView.我想要白色状态栏,所以我只是将我的视图背景设置为白色并且工作正常.第二个选项卡'视图嵌入在导航控制器中.我将第二个视图的背景设置为白色.但我的状态栏变黑了.除了电池标志,我看不到任何东西.看起来像下面的图像:
简单视图状态栏:

View in Navigational Controller状态栏:

我想在我的整个应用程序中使用白色状态栏.知道为什么会发生这种情况,我该如何解决这个问题.提前致谢.
我有一个侧栏菜单的应用程序,有点像Facebook边栏菜单.我正在使用这个被调用的类SWRevealViewController,它工作得很好.现在自iOS7问世以来,我无法弄清楚如何调整我的状态和导航栏就像在Facebook应用程序中一样.
如您所见,在Facebook应用程序中,当用户滑动屏幕并打开菜单时,状态栏会从导航栏蓝色变为黑色,并带有淡入淡出动画.在我的应用程序中,用户滑动屏幕以打开菜单,状态栏的蓝色(由于该视图NavigationBar而为蓝色)不会消失并将颜色更改为黑色.


另外,我有另一个问题,我只是无法将StatusBar文本颜色更改为白色.我已经尝试了所有内容,互联网上的每一段代码,都阅读了所有苹果的文档,但仍然无法改变颜色.
我也用过这段代码:
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
return UIStatusBarAnimationFade;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
- (BOOL)prefersStatusBarHidden
{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
================================================== ======================
更新:@yoeriboven回答中的这个问题的解决方案是将2个视图放在SWRevealViewController黑色和蓝色的顶部,只是为两个设置动画,这是一个很好的解决方案,它的效果非常好.
因此,在创建revealController时,我创建了2个空白UIViews并添加了它们,一个蓝色和一个黑色.其中一个是黑色的,我现在一直隐藏着.
self.revealController = [[SWRevealViewController alloc] initWithRearViewController:nil frontViewController:self.frontViewController];
self.revealController.delegate = self;
self.appDelegate.window.rootViewController = self.revealController;
self.statusBarBlack = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.appDelegate.window.frame.size.width, 20)];
[self.statusBarBlack setBackgroundColor:[UIColor blackColor]];
self.statusBarBlue = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.appDelegate.window.frame.size.width, 20)];
[self.statusBarBlue setBackgroundColor:[UIColor blueColor]];
[self.appDelegate.window.rootViewController.view addSubview:self.statusBarBlack];
[self.appDelegate.window.rootViewController.view addSubview:self.statusBarBlue];
Run Code Online (Sandbox Code Playgroud)
如果您使用的是现在,SWRevealViewController你可以使用下面的代码,如果没有,就建立它自己的,里面SWRevealViewController.m只是#import "AppDelegate.h"比更换touchesMoved与此一方法: …
我在ViewController A中实现了该方法
- (BOOL)prefersStatusBarHidden {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
我在ViewController B中实现了该方法
- (BOOL)prefersStatusBarHidden {
return YES;
}
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
return UIStatusBarAnimationSlide; // when doing hiding animation i want it to slide up
}
Run Code Online (Sandbox Code Playgroud)
我实现了一个T符合viewController转换的类,比如说 AtoBTransition,我用这个ViewControllerTransition转换从vc(viewcontroller)A到vc B. when transitioning to vc B i want the status bar to slide up (hide with sliding animation)但是在这种情况下,似乎它没有那样做滑动动画.
问题:只是假设我没有在课堂上做UIStatusBar相关代码T,并且没有View controller-based status bar appearance在info plist中添加值.转换T可以根据需要完美运行.
我确定代码-preferredStatusBarUpdateAnimation通过断点或日志记录读入,但为什么它没有通过滑动隐藏状态栏动画?当我在模拟器中切换到慢动作.它似乎不做动画.
我的理论是它与转换动画上下文冲突,所以是否有可能在实现过程中隐藏UIStatusBar T作为其过渡方案的一部分?
是否可以与ViewControllerAnimationTransition一起执行UIStatusBar动画?
随意清除一些东西.谢谢你... :)
我有一个导航控制器,持有一个只支持纵向的视图控制器:
这提供了一个仅支持横向的全屏视图控制器:
不幸的是,在转换期间,呈现视图控制器上的状态栏被移除,这使得内容在转换开始之前急剧上升.我已经实现了自定义淡入淡出过渡以使效果明显:
请注意,状态栏不存在.这是在自定义转换开始之前完成的,没有动画,所以即使我在转换开始之前拍摄快照并将其添加到容器视图中,您仍然会暂时看到缩小的导航栏.
有一种非可怕的方法来解决这个问题吗?我不想在转换之外添加快照(比如这个答案).
我已尝试将演示文稿样式设置为自定义而不是全屏,但这不会使设备处于纵向方向.使用自定义呈现样式使设备保持横向方向的解决方案也是可以接受的.
有一个示例项目演示问题在这里
我有AuthViewController这样的表现MainViewController:
let mainVC = MainViewContoller()
mainVC.modalTransitionStyle = .CrossDissolve
authVC.presentViewController(mainVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
我希望AuthViewController隐藏状态栏,但是MainViewController要显示,如下所示:
AuthViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false
}
}
MainViewController {
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
override func preferredStatusBarUpdateAnimation() -> UIStatusBarAnimation {
return .Fade
}
override func prefersStatusBarHidden() -> Bool {
return false …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Xcode 11 beta 6和iOS 13 beta 8构建我的应用程序,但是一旦它开始运行,它将引发此错误:
由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“在UIApplication上名为-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,因此必须更改此代码。而是在窗口场景上使用statusBarManager对象。'
什么是窗口场景,如何使用statusBarManager?
而且我不确定这是否相关,但是我没有使用any SwiftUI。
我从我的MainViewController调用UIImagePickerController(sourceTypeCamera)作为modalViewController.但是,UIImagePickerController不会将屏幕填满顶部,如附带的图像所示.
知道是什么导致这个,以及如何解决?
我将whilebackgroundColor NavigationBar和darktextColor用于statusBar,但是当用户将主题iOS更改为深色时,我的textColor statusBar更改为while,而while我的backgroundColor上NavigationBar则看不到任何东西。如何为我的应用禁用此更改?
uistatusbar ×10
ios ×5
objective-c ×4
iphone ×3
ios13 ×2
ios7 ×2
swift ×2
animation ×1
autoresize ×1
ios-darkmode ×1
statusbar ×1
uitableview ×1
uiview ×1
uiwindow ×1
xcode5 ×1