我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?
我跟着这个线程来覆盖-preferredStatusBarStyle,但它没有被调用.我可以更改任何选项以启用它吗?(我在我的项目中使用XIB.)
我倾向于只将必需品(存储属性,初始化器)放入我的类定义中,并将其他所有内容移动到自己的extension类中,有点像extension我将与之合并的每个逻辑块// MARK:.
例如,对于UIView子类,我最终会得到与布局相关的东西的扩展,一个用于订阅和处理事件等等.在这些扩展中,我不可避免地必须覆盖一些UIKit方法,例如layoutSubviews.我从未注意到这种方法有任何问题 - 直到今天.
以此类层次结构为例:
public class C: NSObject {
public func method() { print("C") }
}
public class B: C {
}
extension B {
override public func method() { print("B") }
}
public class A: B {
}
extension A {
override public func method() { print("A") }
}
(A() as A).method()
(A() as B).method()
(A() as C).method()
Run Code Online (Sandbox Code Playgroud)
输出是A B C.这对我来说没什么意义.我读到有关静态分派的协议扩展,但这不是协议.这是一个常规类,我希望在运行时动态调度方法调用.显然,呼叫C至少应该动态调度和产生C?
如果我删除继承NSObject …
我需要让一个特定的ViewController嵌入到一个UINavigationController具有光状态栏文本颜色(但其他ViewControllers表现不同).我知道至少有3种方法,但无论如何都不适用于我的情况.
如何在iOS 7中更改状态栏文本颜色,方法主要是:
UIViewControllerBasedStatusBarAppearancetoYES[self setNeedsStatusBarAppearanceUpdate];添加以下方法:
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)在iOS 7.0.3上运行,此方法对我不起作用,因为即使在我正确实现了所有3个步骤之后,preferredStatusBarStyle也从未调用过.
UIStatusBarStyle PreferredStatusBarStyle在iOS 7上不起作用,该方法主要是:
将你的navigationBar's 设置barStyle为UIBarStyleBlackTranslucent将给出白色状态栏文本(即.UIStatusBarStyleLightContent),UIBarStyleDefault并将给出黑色状态栏文本(即.UIStatusBarStyleDefault).
这种方法在iPhone上公平公正,但不适用于iPad.
在plist中设置UIViewControllerBasedStatusBarAppearanceto NO,并使用
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
Run Code Online (Sandbox Code Playgroud)
这显然不适用于这种情况,因为我只需要为两个ViewControllers 指定不同的状态栏颜色.
谢谢大家的帮助!
我已经尝试了所有可以找到的解决方案,包括:在iOS 9.0中不推荐使用setStatusBarHidden,但它们都不适用于我的应用程序.
它是一个简单的单视图应用程序.导航栏上有一个按钮,状态栏应显示在其上.
在我的.plist中:
状态栏最初隐藏:NO
状态栏样式:UIStatusBarStyleLightContent
基于视图控制器的状态栏外观:否
改变任何这些似乎都没有任何区别.我已选中状态栏样式"在应用程序启动期间隐藏"选项,因为我不希望它出现在启动画面上.
我有:
- (BOOL)prefersStatusBarHidden
{
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle
{
NSLog(@"style");
return UIStatusBarStyleLightContent;
}
Run Code Online (Sandbox Code Playgroud)
而setNeedsStatusBarAppearanceUpdate这肯定是所有调用的时候,视图负载在我的ViewController.
视图在.storyboard中建立,但许多字段也在ViewController.m中进行操作.分配给模拟指标中状态栏的值似乎也没有任何影响.
我需要在启动屏幕中隐藏状态栏并在viewController上显示.请帮我找一个不使用已弃用的setStatusbarHidden的解决方案!
编辑:
我还没有解决这个问题,我肯定不会是唯一一个遇到这个问题的人!它发生在我写的两个应用程序中.
我在我的应用程序中有以下代码,特别是在viewDidLoad:设置我的UISearchController.
self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.definesPresentationContext = NO;
self.searchController.searchBar.scopeButtonTitles = @[];
self.searchController.searchBar.searchBarStyle = UISearchBarStyleProminent;
[_tableView setTableHeaderView:_searchController.searchBar];
Run Code Online (Sandbox Code Playgroud)
每当tableView调用搜索栏(添加到搜索栏)时,UIStatusBar颜色从UIStatusBarStyleLightContent暗变为白色(白色变为黑色).现在,我想出我是否设置,
self.definesPresentationContext = NO;
Run Code Online (Sandbox Code Playgroud)
以下内容:
self.definesPresentationContext = YES;
Run Code Online (Sandbox Code Playgroud)
问题得到解决,UIStatusBar颜色得以保留.但是,出现了另一个问题.当self.definesPresentationContext设置为YES
,在调用时,搜索栏由于某种原因向下移动,同时(或正确地)在UIRefreshControl显示器底部的下方tableView.
uitableview ios uistatusbar uirefreshcontrol uisearchcontroller
我将whilebackgroundColor NavigationBar和darktextColor用于statusBar,但是当用户将主题iOS更改为深色时,我的textColor statusBar更改为while,而while我的backgroundColor上NavigationBar则看不到任何东西。如何为我的应用禁用此更改?
我UIStatusBarStyle对我为iOS 7 设置应用程序效果的方式非常不满意.基本上我有一个自定义主持人设置了SlidingPanels导航(汉堡菜单).在定制主持人里面我定义了一个RootController,这就是我困惑/勾掉/烦恼的地方......选择一个. </rant>
通常我想做这样的事情并完成它.
RootController = new UIViewController();
// this line won't work because PreferredStatusBarStyle is a Method Group and not a property WTF
RootController.PreferredStatusBarStyle = UIStatusBarStyle.LightContent;
Run Code Online (Sandbox Code Playgroud)
但似乎没有办法在iOS中干净地设置属性.因此,我坚持这种丑陋.
RootController = new CustomUiViewController();
//.....
public class CustomUiViewController : UIViewController
{
public override UIStatusBarStyle PreferredStatusBarStyle()
{
return UIStatusBarStyle.LightContent;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在ViewDidLoad()每一个观点中,我都要打电话SetNeedsStatusBarAppearanceUpdate(),这对我来说是荒谬的.
是否有更清洁/更简单的方法来设置它?
上述方法的一个副作用是当应用程序首次加载时,StatusBar仍然是"黑暗",因此直到之后才能看到时钟ViewDidLoad().
我想在导航栏中有白色文本,但每当我有白色字体的代码时,我仍然将它变黑.
let titleDict: NSDictionary = [NSForegroundColorAttributeName: UIColor.whiteColor()]
self.navigationController?.navigationBar.titleTextAttributes = titleDict
self.navigationController?.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 20)]
Run Code Online (Sandbox Code Playgroud)
我试过了
self.navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName:UIColor.whiteColor()]
但没有奏效
ios ×7
uistatusbar ×4
ios7 ×2
ipad ×2
objective-c ×2
swift ×2
ios-darkmode ×1
ios13 ×1
ios9 ×1
iphone ×1
statusbar ×1
swift2 ×1
textcolor ×1
uikit ×1
uitableview ×1
xamarin ×1
xamarin.ios ×1
xcode ×1
xcode6 ×1