我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?
我跟着这个线程来覆盖-preferredStatusBarStyle
,但它没有被调用.我可以更改任何选项以启用它吗?(我在我的项目中使用XIB.)
我的应用程序的第一个屏幕是UITableViewController
没有导航栏,这意味着内容在状态栏下流动,因此存在大量文本冲突.我已经调整了两个属性Under top bars
,Adjust scroll view insets
哪些实际上阻止了它滚动,但代价是保持表视图的顶部.我试图将UITableView
帧设置为偏移20像素,但它似乎没有生效,因为我目前需要该应用程序与iOS 6兼容我无法跳转到iOS 7 Storyboards强制自动布局使用顶部高度指南.有没有人找到适用于这两个版本的解决方案?
事情我已经尝试:设置edgesForExtendedLayout
,故事情节中更改设置Under top bars
和Adjust scroll view
,迫使帧到一个新的领域.
一张图片胜过千言万语:
我正在使用Xcode 8.0 beta 4.
在以前的版本中,UIViewController具有设置状态栏样式的方法
public func preferredStatusBarStyle() -> UIStatusBarStyle
Run Code Online (Sandbox Code Playgroud)
但是,我发现它在Swift 3中改为"Get ONLY varaiable".
public var preferredStatusBarStyle: UIStatusBarStyle { get }
Run Code Online (Sandbox Code Playgroud)
如何在我的UIViewController中提供使用的样式?
在我使用Xcode 5 for iOS 7构建的iPhone应用程序UIViewControllerBasedStatusBarAppearance=YES
中info.plist
,我设置了ViewController
这个代码:
-(UIStatusBarStyle) preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
但状态栏在黑色背景下仍然是黑色的.
我知道它可以通过设置这个程序范围的更改UIViewControllerBasedStatusBarAppearance=NO
在info.plist
,但我确实需要改变这种对viewController
由viewController
基础在运行时.
更新到Xcode 5后,我所有应用程序视图中的导航栏都向下移动.下面是一些截图,第一个显示视图中的所有内容,因为它被拉下来,第二个显示所有内容都未触及.搜索栏应从导航栏开始.
有谁知道如何解决这个问题?
编辑:我之前尝试过这个建议:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Run Code Online (Sandbox Code Playgroud)
但它产生了非常奇怪的结果.
这可能是因为我在此视图控制器下面有一个"幻灯片菜单",由于导航栏的透明度而出现.
我知道已经有一些stackoverflow 问题说明了如何更改所有视图控制器的状态栏.我目前正在以这种方式更改状态栏的颜色:
if(IS_IOS7)
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
在里面 application:DidFinishLaunching
另外,我已将UIViewControllerBasedStatusBarAppearance
plist中的值更改为NO
.但是,在启动画面中,它仍会显示带有黑色的状态栏文本.
是否可以在启动画面中更改状态栏文本颜色的颜色?
我正在尝试将我的Swift应用程序中的状态栏颜色更改为白色,但是我碰到了一堵砖墙.我有3个ViewControllers,每个都嵌入在NavigationController中(可能是问题吗?我已经尝试将代码放在NavigationController类中.)我在AppDelegate的didFinishLaunchingWithOptions中尝试了以下两段代码. .swift文件,但都没有工作.
application.statusBarStyle = .LightContent
Run Code Online (Sandbox Code Playgroud)
和
UIApplication.sharedApplication().statusBarStyle = .LightContent
Run Code Online (Sandbox Code Playgroud)
Docs关于它的所有内容都是UIBarButtonStyle是一个Int并且给了我这个enum片段,这对我来说并没有任何帮助.
enum UIStatusBarStyle : Int {
case Default
case LightContent
case BlackOpaque
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
在XCode 7.3.x中,我使用以下命令更改了StatusBar的背景颜色:
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
Run Code Online (Sandbox Code Playgroud)
但似乎这不再适用于Swift 3.0.
我尝试过:
func setStatusBarBackgroundColor(color: UIColor) {
guard let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else {
return
}
statusBar.backgroundColor = color
}
Run Code Online (Sandbox Code Playgroud)
但它给了我:
this class is not key value coding-compliant for the key statusBar.
Run Code Online (Sandbox Code Playgroud)
任何想法如何使用XCode8/Swift 3.0进行更改?
(如果需要编辑进行最终编辑,请参阅其他编辑,而不是编写过长的问题).
我有一个应用程序设置如下:
InitialViewController(子类ECSlidingViewController)
主导航控制器(子类UINavigationController
)
主要家庭视图控制器(子类UIViewController
)
在viewDidLoad
initialViewController中,我以主视图控制器为根加载主导航控制器.
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainNavVC"];
Run Code Online (Sandbox Code Playgroud)
在应用程序的第一次加载时,状态栏和导航栏是分开的.
这是期望的效果.
但是,然后我使用标准方法加载模态视图控制器并关闭它:
[self performSegueWithIdentifier:@"LoadSelectOpponentVC" sender:self];
Run Code Online (Sandbox Code Playgroud)
然后关闭:
[self dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
这反过来导致主导航控制器(保持主视图控制器)错误地显示状态栏并重叠:
View controller-based status bar appearance
edgesForExtendedLayout
相关的无,但没有改变.我试图注销一些框架以查看问题发生的位置:
在第一次加载时:
主Nav VC - 查看框架 - {{0,0},{320,480}}
Main Nav VC - Nav Bar Frame - {{0, 0}, {320, 44}}
Initial VC - View Frame - {{0, 0}, {320, 480}}
Home VC - View Frame - …
Run Code Online (Sandbox Code Playgroud) uistatusbar ×10
ios ×8
ios7 ×7
statusbar ×3
swift ×3
appdelegate ×1
iphone ×1
objective-c ×1
swift3 ×1
textcolor ×1
uikit ×1
xcode5 ×1
xcode6 ×1