使用 UISwitch 切换 iOS 7 状态栏

Posted

技术标签:

【中文标题】使用 UISwitch 切换 iOS 7 状态栏【英文标题】:Toggle iOS 7 Status bar with an UISwitch 【发布时间】:2014-10-09 22:36:51 【问题描述】:

我正在尝试使用 UISwitch 切换状态栏(Xcode 5、ios 7)。我目前有这个代码

- (BOOL)prefersStatusBarHidden

    return YES;

这完全隐藏了状态栏。但我想通过 UISwitch 或单击按钮来隐藏和显示状态栏。我该怎么做 ?

我认为向 prefrersStatusBarHidden 返回一个布尔值(YES 或 NO)就可以了。但我找不到任何关于将值返回到 BOOL 的指南。

【问题讨论】:

【参考方案1】:

让您的prefersStatusBarHidden 返回对象的属性,例如self.hideStatusBar,然后在您的按钮/开关方法中执行:

// Set self.hideStatusBar value based on what the user did
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])

    // iOS 7+
    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];

else

    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:self.hideStatusBar withAnimation:UIStatusBarAnimationSlide];

以上代码来自another *** answer

确保给self.hideStatusBar一个默认值!

【讨论】:

谢谢..但是没有用。但我浏览了您提供的链接,发现该方法作为另一个答案!【参考方案2】:

OP 的解决方案。

在.h文件头

@interface ViewController ()
@end

BOOL shouldHideStatusBar;

代码

- (BOOL)prefersStatusBarHidden 
    return shouldHideStatusBar;


- (void)setPrefersStatusBarHidden:(BOOL)hidden 
    shouldHideStatusBar = hidden;

    //[self setNeedsStatusBarAppearanceUpdate];
    [UIView animateWithDuration:0.33 animations:^ //this animates the event
        [self setNeedsStatusBarAppearanceUpdate];
    ];

调用它(在我的例子中使用 UISwitch)

[self setPrefersStatusBarHidden:NO];

【讨论】:

以上是关于使用 UISwitch 切换 iOS 7 状态栏的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式切换uiswitch按钮

IOS-UI-基本控件之UISwitch

Xamarin.IOS 切换按钮?

IOS UISwitch 控件

RxSwift之UI控件UISwitch与UISegmentedControl扩展的使用

iOS开关按钮UISwitch控件