相关疑难解决方法(0)

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

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

statusbar textcolor ios uistatusbar ios7

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

覆盖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万
查看次数

UIStatusBarStyle PreferredStatusBarStyle在iOS 7上不起作用

在我使用Xcode 5 for iOS 7构建的iPhone应用程序UIViewControllerBasedStatusBarAppearance=YESinfo.plist,我设置了ViewController这个代码:

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

但状态栏在黑色背景下仍然是黑色的.

我知道它可以通过设置这个程序范围的更改UIViewControllerBasedStatusBarAppearance=NOinfo.plist,但我确实需要改变这种对viewControllerviewController基础在运行时.

iphone uistatusbar ios7 xcode5

110
推荐指数
9
解决办法
8万
查看次数

使用Objective-C中的类别覆盖方法

我可以使用类类别来覆盖已使用类别实现的方法吗?像这样:

1)原始方法

-(BOOL) method {
  return true;
}
Run Code Online (Sandbox Code Playgroud)

2)覆盖方法

-(BOOL) method {
  NSLog(@"error?"); 
  return true; 
}
Run Code Online (Sandbox Code Playgroud)

这会起作用,还是非法的?

objective-c categories

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

UIStatusBarStyle无法在Swift中运行

我正在尝试将我的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)

我错过了什么?

ios uistatusbar appdelegate swift xcode6

85
推荐指数
8
解决办法
6万
查看次数

从iOS 9开始,如何为状态栏样式更改设置动画

所以我以前用过:

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

动画状态栏样式的变化,从暗到亮,反之亦然

但是,自iOS 9起,此方法已弃用.

我更改为使用preferredStatusBarStyle以下@serenn的答案,而不是调用preferredStatusBarStyle

它确实可以改变旧式的状态栏样式,但没有动画.

文件说:

如果此方法的返回值更改,请调用setNeedsStatusBarAppearanceUpdate方法.

但是我不知道在哪里调用它,我试过把它放在viewWillAppear中,但没有运气.

preferredStatusBarUpdateAnimation 仍为默认值:UIStatusBarAnimationFade

所以我很困惑.寻找如何动画为已弃用方法的答案.提前致谢!

ios

14
推荐指数
1
解决办法
4532
查看次数

如何使用swift在一个视图控制器中更改状态栏颜色?

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: true)
Run Code Online (Sandbox Code Playgroud)

我使用这个在所有应用程序中将状态栏更改为亮.但现在我需要在一个View Controller中将其更改为黑色.我怎样才能做到这一点?

xcode ios swift

10
推荐指数
3
解决办法
9490
查看次数

preferredStatusBarStyle var在iOS12中不起作用?

添加

application.statusBarStyle = .lightContent
Run Code Online (Sandbox Code Playgroud)

到我的AppDelegate的didFinishLaunchingWithOptions方法也没有添加

override var preferredStatusBarStyle: UIStatusBarStyle {
    return UIStatusBarStyle.lightContent
}
Run Code Online (Sandbox Code Playgroud)

到VC不再适用于iOS12/Xcode10

有任何想法吗?

ios12 xcode10

10
推荐指数
3
解决办法
6090
查看次数

preferredStatusBarStyle不起作用

我曾经setStatusBarStyle在我的项目中使用,它工作正常,但它已被弃用,所以我使用preferredStatusBarStyle,但没有用.知道我:

  1. 调用方法setNeedsStatusBarAppearanceUpdate.
  2. 在Info.plist中将"查看基于控制器的状态栏外观"设置为NO
  3. 覆盖该功能

    • (UIStatusBarStyle)preferredStatusBarStyle {return UIStatusBarStyleLightContent; }

    此函数未被调用

注意:我正在使用导航控制器.

xcode objective-c statusbar ios swift

8
推荐指数
1
解决办法
1万
查看次数

带有NavigationBar的TabBarController上的彩色状态栏无效

我在这里阅读了很多帖子,并尝试了大多数提到的选项,但没有人为我解决问题.我有一个基于标签栏控制器的应用程序.每个选项卡都是一个UIViewController,顶部有一个导航栏.

将此代码添加到AppDelegate为我提供了带有白色文本的橙色导航栏,但是带有黑色文本的白色状态栏.

[[UINavigationBar appearance] setBarTintColor:[UIColor orangeColor]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Run Code Online (Sandbox Code Playgroud)

阅读各种页面上的答案建议将以下内容添加到View控制器:

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

然后在View Did Load中调用它:

[self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)

这让我得到一个带有白色文本的白色状态栏,我现在如何让状态栏变为橙色以匹配我的导航栏?

对于使用导航控制器的人来说,这里提到的解决方案/sf/answers/1365960011/不起作用,我想这是因为我的主控制器是一个标签栏控制器.

有没有人遇到过这个?提前感谢您提出的任何建议/建议.如果需要,我可以提供一个示例应用程序,但可能很快使用Tab Bar模板构建一个,添加导航栏然后粘贴我的代码示例.

等离子体

objective-c statusbar ios

7
推荐指数
1
解决办法
1305
查看次数

如何以编程方式更改PreferredStatusBarStyle

我想通过按下按钮将状态栏的颜色从白色更改为黑色,PROGRAMMATICALLY仅在单个ViewController中

这是代码:

- (UIStatusBarStyle)preferredStatusBarStyle {
    NSLog(@"PreferredStatusBarStyle");
    if(nav_bar.alpha==1)
    {
        NSLog(@"->UIStatusBarStyleBlackOpaque");
        return UIStatusBarStyleBlackOpaque;
    }
    else
    {
        NSLog(@"->UIStatusBarStyleLightContent");
        return UIStatusBarStyleLightContent;
    }}
Run Code Online (Sandbox Code Playgroud)

然后,当我按下按钮动作是:

[self setNeedsStatusBarAppearanceUpdate];
Run Code Online (Sandbox Code Playgroud)

但这不起作用!

当我按下按钮日志时,根据navbar.alpha写入正确的状态,但状态栏文本颜色保持UIStatusBarStyleBlackOpaque,就像出现视图时一样.

objective-c statusbar uistatusbar ios7

3
推荐指数
2
解决办法
8543
查看次数

从未调用过的 preferredStatusBarStyle

我的视图控制器层次结构是SWRevealViewController-> UINavigationViewController-> MyController1MyController1礼物MyController2使用self.presentMyController2不在内部UINavigationViewController并且演示文稿是模态的(设备是 iPhone)。In viewWillAppearof MyController2I call self.setNeedsStatusBarAppearanceUpdate(),但从preferredStatusBarStyle未被系统调用,状态栏外观保持不变(就像MyViewController1)。我在这里错过了什么吗?

编辑

info.plist基于视图控制器的状态栏外观设置为YES

iphone ios uistatusbar

3
推荐指数
1
解决办法
4710
查看次数

Swift 4-特定的View Controller状态栏样式不变

实施后UIViewController,状态栏内容的颜色似乎由于某种原因没有改变(仍然保持黑色)。仅使用特定的Swift 4.0,如何通过编程将其更改为“浅色”模式(白色)UIViewController?不是整个应用程序。

ViewController.swift类

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()            
        view.backgroundColor = UIColor.blue

        self.title = "Hello World"
        self.navigationController?.navigationBar.barTintColor = UIColor.gray
        self.navigationController?.navigationBar.prefersLargeTitles = true
        self.navigationController?.navigationItem.largeTitleDisplayMode = .automatic

        self.navigationController?.navigationBar.largeTitleTextAttributes = [
            NSAttributedStringKey.foregroundColor: UIColor.white,
            NSAttributedStringKey.font : UIFont.preferredFont(forTextStyle: .largeTitle)
        ]
    }

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

jake.lange的建议

在此处输入图片说明

uiviewcontroller uikit ios swift swift4

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