Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在一个ViewController、objective C和iOS中显示/隐藏状态栏_Ios_Objective C_Statusbar - Fatal编程技术网

仅在一个ViewController、objective C和iOS中显示/隐藏状态栏

仅在一个ViewController、objective C和iOS中显示/隐藏状态栏,ios,objective-c,statusbar,Ios,Objective C,Statusbar,我希望状态栏显示在ViewController的ViewWillExample()中,并在ViewWillEnglishe()中消失 我在用 [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO]; 但它在iOS 9.0中被弃用 我正在使用 UIApplication.shared.isStatusBarHidden = false 在swift中,但在目标C中,这是只读值 prefersStat

我希望状态栏显示在ViewController的ViewWillExample()中,并在ViewWillEnglishe()中消失

我在用

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
但它在iOS 9.0中被弃用

我正在使用

UIApplication.shared.isStatusBarHidden = false
在swift中,但在目标C中,这是只读值

prefersStatusBarHidden也不适用于我,因为我需要在viewWillEnglishe()函数中隐藏状态栏


有人能帮我吗

对于要更改状态栏可见性的每个视图控制器,您需要覆盖
首选状态栏hidden
。但要使其真正起作用,必须在项目的
Info.plist
中添加以下键/值:

键:
查看基于控制器的状态栏外观

值:


要控制
视图中状态栏的可见性,请执行以下操作:

var statusBarHidden = false

override func viewWillAppear() {
    super.viewWillAppear()
    statusBarHidden = false
    self.setNeedsStatusBarAppearanceUpdate()
}

override func viewWillDisappear() {
    super.viewWillDisappear()
    statusBarHidden = true
    self.setNeedsStatusBarAppearanceUpdate()
}

override var prefersStatusBarHidden: Bool {
    return statusBarHidden
}
对于Swift 3

override var prefersStatusBarHidden: Bool{
        return true
    }
并添加
viewDidLoad()


为Objective-C编写示例(与@dennykim编写的SWIFT代码相同)

  • 为BOOL创建属性
  • @属性(非原子,赋值)BOOL statusBarHidden

  • 在info.plist中设置查看基于控制器的状态栏外观=
  • 转到ViewController并编写下一个代码:
  • -(无效)视图将显示:(BOOL)动画{


    好问题!我最近一直在努力解决这些问题!您可以尝试在info.plist中添加值为“NO”的键“UIViewControllerBasedStatusBarAppearance”,如果需要,还可以调用func setNeedsStatusBarAppearanceUpdate()。我在info.plist中有“UIViewControllerBasedStatusBarAppearance-NO”,我需要翻译“UIApplication.shared.isStatusBarHidden=false"swift代码到objective CYes它肯定会工作,但我想避免在每个视图控制器中重写此方法,我知道在swift中是可能的,并假设在objective C中也是可能的,但找不到正确的函数要避免在每个视图控制器中重写此方法,可以使用在适当的地方使用方法和子类。这是正确的答案!但是我不需要
    viewDidLoad()
    中的语句。没有它它它就可以工作。
    override var prefersStatusBarHidden: Bool{
            return true
        }
    
    self.modalPresentationCapturesStatusBarAppearance = true
    
    [super viewWillAppear:animated];
    
    self.statusBarHidden = TRUE;
    [self setNeedsStatusBarAppearanceUpdate];
    }
    -(void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
    
        self.statusBarHidden = FALSE;
        [self setNeedsStatusBarAppearanceUpdate];   
    }
    
    - (BOOL)prefersStatusBarHidden {
        return self.statusBarHidden;
    }