gpt4 book ai didi

iOS Storyboard - 一次禁用 Storyboard上的状态栏

转载 作者:技术小花猫 更新时间:2023-10-29 10:30:29 25 4
gpt4 key购买 nike

Interface Builder 中使用 Storyboard 时,Xcode 是否有办法完全禁用状态栏,这样当我创建一个新的 View Controller 我不必一直将“状态栏”从推断变为无。

最佳答案

这是一个完全兼容 iOS 7 的解决方案(但不兼容 iOS 6,因为太多的东西已经改变了)

来自 Apple 文档“:信息属性列表关键引用”:

UIViewControllerBasedStatusBarAppearance( bool 值 - iOS)指定状态栏外观是否基于当前位于状态栏下方的 View Controller 的首选样式。当此键不存在或其值设置为 YES 时, View Controller 确定状态栏样式。当键设置为 NO 时, View Controller (或应用程序)必须分别使用 UIApplication 对象显式设置状态栏样式。此 key 在 iOS 7.0 及更高版本中受支持。

因此默认情况下此键不存在(= 与添加键相同的行为,但将其设置为 YES):在这种情况下,每个 View Controller 通过覆盖某些方法来确定状态栏行为 - 见下文。

1) 全局显示/隐藏您应用的所有 viewController 的状态栏

所以首先要完整回答你的问题,为你所有的应用程序 viewControllers 做一个单一的全局显示/隐藏设置

第 1 步:在您的 frameWork-Info.plst 文件中,添加关键字“View controller-based status bar appearance”并将其设置为“NO”。将此键设置为“NO”将使 iOS 7 不调用方法“prefersStatusBarHidden”和“preferredStatusBarUpdateAnimation”,请参阅下文。

第 2 步:在项目设置 -> 常规 -> 部署信息中,在应用程序启动期间选择“显示/隐藏”

就是这样:现在您可以全局显示或隐藏状态栏,与 iOS 7 兼容

2) 让您的所有 viewController 单独控制状态栏(= iOS 7 默认值)

第 1 步:不添加 key ,或添加它,但将其设置为 YES,以获得 iOS 7 默认行为

第 2 步:在每个 viewController 中,您现在可以通过重写来确定是否显示/隐藏状态栏:

  • (BOOL)prefersStatusBarHidden
  • (UIStatusBarAnimation)preferredStatusBarUpdateAnimation

因此您需要覆盖这 2 个方法来控制状态栏行为,并为您的应用程序返回适当的值(请参阅文档引用以了解所有可能的值,它有明确的解释)。

要控制应用程序启动期间的行为(显示的第一个 Controller ),请在项目设置下设置显示/隐藏 -> 常规 -> 部署信息

请注意,iOS 7 仅支持单一外观样式 (UIStatusBarStyleLightContent),所有其他样式均已弃用!

因此,您可以轻松地使用按钮打开/关闭栏 - 尽可能灵活!

例如,向您的 viewController 添加一个按钮和一个 bool @property 'isStatusBarHidden' 使用以下代码通过动画打开/关闭栏。

- (BOOL)prefersStatusBarHidden
{
return self.isStatusBarHidden;
}

- (IBAction)buttonToggleStatusBar:(UIButton *)sender
{
[UIView animateWithDuration:1.0 animations:^{
self.isStatusBarHidden = !self.isStatusBarHidden;
[self setNeedsStatusBarAppearanceUpdate];
}];

}

你可以为喜欢的动画做同样的事情

高级注意事项:如果您想为@property 'isStatusBarHidden' 设置默认值,您需要在'initWithCoder'(使用 Storyboard 时调用)而不是 viewDidLoad 中这样做。原因是 'prefersStatusBarHidden' 和 'preferredStatusBarUpdateAnimation' 在 'viewDidLoad' 之前被调用

关于iOS Storyboard - 一次禁用 Storyboard上的状态栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com