使用 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 状态栏的主要内容,如果未能解决你的问题,请参考以下文章