相关疑难解决方法(0)

如何在iOS中更改状态栏文本颜色

我的应用程序背景较暗,但在iOS 7中,状态栏变得透明.所以我看不到任何东西,只有角落里的绿色电池指示灯.如何将状态栏文本颜色更改为白色,就像在主屏幕上一样?

statusbar textcolor ios uistatusbar ios7

975
推荐指数
38
解决办法
59万
查看次数

不调用preferredStatusBarStyle

我跟着这个线程来覆盖-preferredStatusBarStyle,但它没有被调用.我可以更改任何选项以启用它吗?(我在我的项目中使用XIB.)

uikit ios uistatusbar ios7

250
推荐指数
13
解决办法
12万
查看次数

覆盖Swift扩展中的方法

我倾向于只将必需品(存储属性,初始化器)放入我的类定义中,并将其他所有内容移动到自己的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 …

swift swift-extensions swift2

119
推荐指数
4
解决办法
6万
查看次数

在iOS 7中基于不同ViewControllers设置灯状态栏文本颜色的正确方法

我需要让一个特定的ViewController嵌入到一个UINavigationController具有光状态栏文本颜色(但其他ViewControllers表现不同).我知道至少有3种方法,但无论如何都不适用于我的情况.

  1. 如何在iOS 7中更改状态栏文本颜色,方法主要是:

    • 在plist中设置UIViewControllerBasedStatusBarAppearancetoYES
    • 在viewDidLoad中做一个 [self setNeedsStatusBarAppearanceUpdate];
    • 添加以下方法:

      - (UIStatusBarStyle)preferredStatusBarStyle{ 
            return UIStatusBarStyleLightContent; 
        }
      
      Run Code Online (Sandbox Code Playgroud)

    在iOS 7.0.3上运行,此方法对我不起作用,因为即使在我正确实现了所有3个步骤之后,preferredStatusBarStyle也从未调用过.

  2. UIStatusBarStyle PreferredStatusBarStyle在iOS 7上不起作用,该方法主要是:

    将你的navigationBar's 设置barStyleUIBarStyleBlackTranslucent将给出白色状态栏文本(即.UIStatusBarStyleLightContent),UIBarStyleDefault并将给出黑色状态栏文本(即.UIStatusBarStyleDefault).

    这种方法在iPhone上公平公正,但不适用于iPad.

  3. 在plist中设置UIViewControllerBasedStatusBarAppearanceto NO,并使用

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    
    Run Code Online (Sandbox Code Playgroud)

    这显然不适用于这种情况,因为我只需要为两个ViewControllers 指定不同的状态栏颜色.

谢谢大家的帮助!

iphone uinavigationbar uinavigationcontroller ipad ios

16
推荐指数
4
解决办法
6567
查看次数

不推荐使用setStatusBarHidden,但只能使用它

我已经尝试了所有可以找到的解决方案,包括:在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的解决方案!

编辑:

我还没有解决这个问题,我肯定不会是唯一一个遇到这个问题的人!它发生在我写的两个应用程序中.

objective-c ipad ios xcode6 ios9

12
推荐指数
2
解决办法
7447
查看次数

UISearchController在调用时更改状态栏颜色

我在我的应用程序中有以下代码,特别是在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

9
推荐指数
1
解决办法
6551
查看次数

如何通过darkMode iOS 13禁用更改statusBar textColor

我将whilebackgroundColor NavigationBardarktextColor用于statusBar,但是当用户将主题iOS更改为深色时,我的textColor statusBar更改为while,而while我的backgroundColor上NavigationBar则看不到任何东西。如何为我的应用禁用此更改?

uistatusbar ios13 ios-darkmode

5
推荐指数
3
解决办法
3512
查看次数

有没有更简单的方法来设置我的应用程序的PreferredStatusBarStyle?

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().

xamarin.ios ios xamarin

2
推荐指数
1
解决办法
1825
查看次数

导航栏Swift中的文本颜色

我想在导航栏中有白色文本,但每当我有白色字体的代码时,我仍然将它变黑.

    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()]

但没有奏效

xcode objective-c uinavigationbar ios swift

2
推荐指数
1
解决办法
2489
查看次数