私のiOSビデオアプリでは、ステータスバーはView Controllerによっては隠されています。次のコードを使用してこれを行いました。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
IOS 5とiOS 6では機能しますが、iOS 7では機能しません。
私はこれを特にView Controllerで試しました、
例えば:
-(BOOL)prefersStatusBarHidden { return YES; }
うまく機能しますが、親View Controllerにステータスバーを再度表示できません。
この値をplistに追加する必要があります。 "View Controllerベースのステータスバーの外観"とそれを ""に設定します。いいえ "。
Info.plistに以下を追加してください。
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Viewdidloadに次の行を追加します。
[[UIApplication sharedApplication] setStatusBarHidden:YES
withAnimation:UIStatusBarAnimationFade];
そして新しいメソッドを追加する
- (BOOL)prefersStatusBarHidden {
return YES;
}
info.plistファイルも変更します。コントローラベースのステータスバーの外観の表示 "= NO
その仕事は私のために
Plistに以下のプロパティを追加します。
Status bar is initially hidden = YES
View controller-based status bar appearance = NO
今すぐステータスバーが非表示になります。
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated]
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
override func viewWillAppear(animated: Bool)
{
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool)
{
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
私は次のことをしました、そしてそれは(iOS 8でも)動作するようです。
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
}
- (BOOL)prefersStatusBarHidden {
return YES;
}
しかし、UINavigationControllerが関係しているともっと面白くなります。
IOS7でステータスバーを隠すには2行のコードが必要です
アプリケーション内:(UIApplication *)アプリケーションdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
[[UIApplication sharedApplication] setStatusBarHidden:YES];
info.plistでこれを追加
View-Controller Based Status Bar Appearance = NO
よりよく理解するために、コメント付きの写真をいくつか追加してください。
変更前のアプリ
Project Navigator
という名前のSupporting Files
フォルダにあり、* .plistファイルをクリックします。
あなたが示したあなたのアプリの異なる設定を取得した後。 UIStatusBarHidden
とUIViewControllerBasedStatusBarAppearance
という2つのキーを追加する必要があります。あなたは単に+ボタンをクリックしてこれを行うことができます
+を押した後、あなたはキーの1つを選ぶことができます - ちょうどタイプし始めてください。
正しいバージョン
そして最後に、この変更を適用した後に適用します。
また、あなたはここで代わりの解決策を見つけることができます
試してみてください。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
IOS10では、prefersStatusBarHidden
のRootViewController
varを上書きするだけです(Swift)。
override var prefersStatusBarHidden: Bool {
return true
}
これはSwiftバージョンです(iOS9以前):
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
UIApplication.sharedApplication().setStatusBarHidden(true, withAnimation: UIStatusBarAnimation.None)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
UIApplication.sharedApplication().setStatusBarHidden(false, withAnimation: UIStatusBarAnimation.None)
}
これも動作します(iOS 7以降):
override func prefersStatusBarHidden() -> Bool {
return true
}
あなたも呼び出す必要があります:
setNeedsStatusBarAppearanceUpdate()
たとえばviewDidLoad()
です。
SplitViewコントローラや他の何らかのcontainer
ビューコントローラを使用している場合は、送信されたchildViewControllerForStatusBarHidden
が返されたときにクラスを返すようにする必要もあります。これを行うための1つの方法は、例えばstatusController
のようなpublic weak varを持ち、それをこのオーバーライドされたメソッドで返すことです。
IOS7でステータスバーを隠すには:
Plistファイルを開き、 "View controller-based status bar appearance"という行を追加して、その値をNO
に設定します。
iOS 9以降:
statusBarHidden
メソッドは 廃止予定 から iOS9 でしたので、以下のようにplistに2つの値を追加する必要があります。
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
またはユーザーインターフェースで以下の画像を更新してください。
statusBarHidden
は 廃止予定 from iOS9 :
@property(readwrite、nonatomic、getter = isStatusBarHidden)BOOL statusBarHidden NS _ _非推奨_ _ IOS(2_0、 9_0 、 "使用 - [UIViewController prefersStatusBarHidden]")
Swift 3以降用の解決策(iOS 9、10)
1-プロパティの下に設定info.plist
2-ルートコントローラに以下のコードを貼り付けます。
private var isStatusBarHidden = true {
didSet {
setNeedsStatusBarAppearanceUpdate()
}
}
override var prefersStatusBarHidden: Bool {
return isStatusBarHidden
}
isStatusBarHidden = true
およびisStatusBarHidden = false
は、ステータスバーをhide/show
にしたい場所で呼び出すことができます。
この値をplist: "View controller-based status bar appearance"に追加して "NO"に設定する必要があります。
iOSのステータスバーを隠す手順
1。 AppDelegate.mファイルを開き、didFinishLaunchingWithOptionsメソッドにapplication.statusBarHiddenを追加します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
application.statusBarHidden = YES;
return YES;
}
View controller-based status bar appearance
set NO
Susithaの質問に答えるには、setNeedsStatusBarAppearanceUpdateを使用してください。これにより、prefersStatusBarHiddenを呼び出して、必要なステータスバーの状態に更新されます。これを試して:
@property (nonatomic, getter=isHideStatusBar) BOOL hideStatusBar; // Give this a default value early
- (BOOL)prefersStatusBarHidden {
return self.isHideStatusBar;
}
- (void)someMethod {
// triggered by an event or user action
[self setHideStatusBar:YES];
[self setNeedsStatusBarAppearanceUpdate];
}
ステータスバーをもう一度表示するには、プロパティhideStatusBar(またはそれを呼び出したもの)をすべてNOに設定します。に別の呼び出しを行うことによって、間接的にpreferStatusBarHiddenを呼び出します。
[self setNeedsStatusBarAppearanceUpdate]
UIKit
> UIApplication.h
から:
// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden;
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_AVAILABLE_IOS(3_2);
View controller-based status bar appearance
をNOに設定してください。
Swift 3用に更新します。
以下の情報でInfo.plistを更新します。
View controller-based status bar appearance: NO
次に、ViewControllerなどで:
UIApplication.shared.isStatusBarHidden = true