IPhone 5 iOS 7を4つのベータ版にアップグレードしました。このiPhoneでXcode 5からアプリを実行しても、ステータスバーが非表示になることはありません。
動作していない
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
動作していない
[UIApplication sharedApplication].statusBarHidden = YES;
Apple開発者フォーラムにログインできません
アプリのplistファイルに、「View controller-based status bar appearance」という行を追加して、NOに設定します。
アプリでUIImagePickerControllerを使用している場合、これは単に機能しません。
http://www.openfl.org/developer/forums/general-discussion/iphone-5ios-7-cant-hide-status-bar/ から、mgirouxのソリューション
View Controllerにメソッドを追加します。
- (BOOL)prefersStatusBarHidden {
return YES;
}
Plistに以下のプロパティを追加します。
- > Status bar is initially hidden
= YES
- > View controller-based status bar appearance
= NO
両方を追加 - 今すぐステータスバーが消えます。
シングルビューでステータスバーを非表示にするには、次のようにします。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];
最初は、これは私にはうまくいきませんでした。そして、このメソッドのドキュメントで以下のように述べていました。
これはplistファイルで行わなければならず、キーView controller-based status bar appearance
をNO
に設定します。そしてそれはうまくいった。
IOS7でステータスバーを隠すには2行のコードが必要です
該当なし:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
write
[application setStatusBarHidden:YES];
info.plistでこれを追加
View-Controller Based Status Bar Appearance = NO
ステータスバーを表示/非表示にするために従来のUIApplicationメソッドを使用するには、アプリでiOS 7のplist値を設定する必要があります。
View-Controller Based Status Bar Appearance = NO
この値はデフォルトでYESに設定されています。 NOに変更した場合は、従来の方法を使用できます。 YESに設定したままにしても、ステータスバーを非表示にすることはできますが、オーバーライドするのはアプリ内の各View Controllerサブクラスによって異なります。prefersStatusBarHidden
は、YESを返します。
ステータスバーの外観や表示設定の変更が必要で、View Controllerベースのステータスバーの外観がYESに設定されている場合は、最も外側のView Controllerを呼び出す必要があります。
setNeedsStatusBarAppearanceUpdateAnimation
この問題に対して推奨される組み合わせは非常に多数ありますが、問題は、iOS 6と7ではステータスバーを非表示にする方法が異なることです。 iOS 7でiOS 6スタイルの動作を有効にするためのplist設定の設定に成功したことは一度もありませんが、iOS 6+をサポートするようにアプリを構築している場合はバー:
// for ios 7
- (BOOL)prefersStatusBarHidden{
return YES;
}
// for ios 6
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
// explicitly set the bar to show or it will remain hidden for other view controllers
[[UIApplication sharedApplication] setStatusBarHidden:NO];
}
これはあなたのplist設定に関係なく動作するはずです。
ステータスバーを隠すには、以下の両方の変更をしなければなりませんでした。
ステータスバーを非表示にするビューコントローラにこのコードを追加します。
- (BOOL)prefersStatusBarHidden
{
return YES;
}
これをあなたの.plistファイルに追加してください(あなたのアプリケーション設定の 'info'に行きます)。
View controller-based status bar appearance --- NO
その後、この行を呼び出してステータスバーを非表示にすることができます。
[[UIApplication sharedApplication] setStatusBarHidden:YES];
この2行をinfo.plistファイルに追加するだけです。それはiOS7とそれ以前のバージョンの両方に対する修正を行います。
プロジェクトに移動して「ターゲット」 - >「一般」を選択し、「ステータスバーのスタイル...アプリケーションの起動時に非表示にする」チェックボックスを選択します。これはうまくいくでしょう。
この簡単な方法を試してください。
- (void)viewWillAppear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
- (void)viewWillDisappear:(BOOL)animated
{
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
}
私のために働いた唯一のことはあなたのplistに以下を追加することです。
<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
アプリ全体でステータスバーを非表示にするための最も簡単な方法は、category
にUIViewController
を作成し、prefersStatusBarHidden
をオーバーライドすることです。こうすれば、すべてのView Controllerにこのメソッドを記述する必要がなくなります。
#import <UIKit/UIKit.h>
@interface UIViewController (HideStatusBar)
@end
#import "UIViewController+HideStatusBar.h"
@implementation UIViewController (HideStatusBar)
//Pragma Marks suppress compiler warning in LLVM.
//Technically, you shouldn't override methods by using a category,
//but I feel that in this case it won't hurt so long as you truly
//want every view controller to hide the status bar.
//Other opinions on this are definitely welcome
#pragma clang diagnostic Push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (BOOL)prefersStatusBarHidden
{
return YES;
}
#pragma clang diagnostic pop
@end
Plistに追加----
コントローラベースのステータスバーの外観を表示--- NO
各viewControllerに次のように書きます。
- (void) viewDidLayoutSubviews
{
CGRect viewBounds = self.view.bounds;
CGFloat topBarOffset = 20.0;
viewBounds.Origin.y = -topBarOffset;
self.view.bounds = viewBounds;
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];//for status bar style
}
IOS 7のステータスバーの問題ですが、アプリのターゲットは5.1以上である必要があります
-(BOOL)prefersStatusBarHidden { return YES; }
IOS 7のステータスバーを隠すには:
1.アプリケーションのinfo.plistファイルに移動します。
2.And Set、View Controllerベースのステータスバーの外観:ブールNO
私はステータスバーの問題を解決したい.....
IOS 7では、単一ビューでviewWillappearメソッドを使用します。
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];
ステータスバーを表示するには:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
Info Plistファイル内次のプロパティに行を追加する
プロパティ名:ビューベースのステータスバーの外観
値:NO
このスレッドに関する答えの多くはうまくいきますが、動的に何かをやろうとしているのなら私の理解です。
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
私は自分のプロジェクトにここに掲載されているこれらすべてのオプションを試してみましたが、うまくいきませんでした。それは私がXcode
を更新し、それからアプリをiOS 7に更新し、そしていくつかの設定がどこかでめちゃくちゃになったという事実に関係していると私は考えた。私はそれのために全く新しいプロジェクトを構築することに決めました、そして、それが正しく働いた(すなわち、ステータスバーなし)と言われるように、単純な設定:「Status bar is initially hidden = YES
」と「View controller-based status bar appearance = NO
」。
古いバージョンからiOS 7にアップデートされ、他のすべてのオプションを試したプロジェクトで作業しているのであれば、私のアドバイスは新しいプロジェクトを構築することです。
アプリのルートView Controllerに次のメソッドを追加してみてください。
- (BOOL)prefersStatusBarHidden
{
return YES;
}
あなたはこの コード 、ポッド をチェックすることができますUIViewController + ODStatusBar
特定のviewControllerのステータスバーを非表示にする
- (BOOL)prefersStatusBarHidden {
return YES;
}
ステータスバーを設定する場合アプリケーションに非表示:
.plistおよびView controller-based status bar appearance
にapplication: didFinishLaunchingWithOptions:
toNO
を設定します。set:[application setStatusBarHidden:YES];
注:setStatusBarHidden:廃止予定です
OR
プロジェクト設定 - >一般タブ - >配置情報
Hide Status bar
ボックスをチェックしてください。
Swift 2.0以降の場合IOS 9
override func prefersStatusBarHidden() -> Bool {
return true
}