iOS 7でステータスバーを非表示にしたり、文字色の変更やアニメーションを指定する方法を以下に記載します。
前準備
Info.plist ファイルで UIViewControllerBasedStatusBarAppearance の値を NOにする事で、コードでのステータスバーの変更が可能になります。または、Info.plist の View controller-based status bar appearance の値を YESでも問題ありません。
下記にステータスバーを制御するコードを記載します。
ステータスバーの非表示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- ( void ) viewDidLoad
{
[ super viewDidLoad ];
// ステータスバーの表示/非表示メソッド呼び出し
if ([ self respondsToSelector: @selector ( setNeedsStatusBarAppearanceUpdate )]) {
// iOS 7以降
[ self prefersStatusBarHidden ];
[ self performSelector: @selector ( setNeedsStatusBarAppearanceUpdate )];
} else {
// iOS 7未満
[[ UIApplication sharedApplication ] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationSlide ];
}
}
// ステータスバーの非表示
- ( BOOL ) prefersStatusBarHidden
{
return YES ;
}
ステータスバーのスタイル変更
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- ( void ) viewDidLoad
{
[ super viewDidLoad ];
// ステータスバーのスタイル適用
if ([ self respondsToSelector: @selector ( setNeedsStatusBarAppearanceUpdate )]) {
[ self setNeedsStatusBarAppearanceUpdate ];
}
}
- ( UIStatusBarStyle ) preferredStatusBarStyle
{
// ステータスバーの文字色を白に指定
return UIStatusBarStyleLightContent ;
}
ステータスバーのスタイル一覧
1
2
3
4
5
6
typedef NS_ENUM ( NSUInteger , statusBarStyle ) {
UIStatusBarStyleDefault = 1 ,
UIStatusBarStyleLightContent = 2 ,
UIStatusBarStyleBlackTranslucent = 3 ,
UIStatusBarStyleBlackOpaque = 4
};
アニメーション指定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- ( void ) viewDidLoad
{
[ super viewDidLoad ];
// ステータスバーのアニメーション呼び出し
if ( floor ( NSFoundationVersionNumber ) <= NSFoundationVersionNumber_iOS_6_1 ) {
[[ UIApplication sharedApplication ] setStatusBarHidden: YES withAnimation: UIStatusBarAnimationFade ];
}
}
// ステータスバーのアニメーション
- ( UIStatusBarAnimation ) preferredStatusBarUpdateAnimation
{
return UIStatusBarAnimationFade ;
}
起動時を含め全画面からステータスバーを非表示
Info.plist で Status bar is initially hidden という値を追加し YESを指定すると、起動時のスプラッシュ画面を含む全画面でステータスバーが非表示になります。
iOS 7以降であるかの判別
フレームワークを参照する方法
1
2
3
4
5
if ( floor ( NSFoundationVersionNumber ) <= NSFoundationVersionNumber_iOS_6_1 ) {
// iOS 6.1以下
} else {
// iOS 7以降
}
iOSのバージョンを取得し判別する方法
1
2
3
4
5
6
- ( BOOL ) isIOS7
{
NSString * osversion = [ UIDevice currentDevice ]. systemVersion ;
NSArray * a = [ osversion componentsSeparatedByString: @"." ];
return ([( NSString * )[ a objectAtIndex: 0 ] intValue ] >= 7 );
}
関連記事
お薦めの参考書
詳細! Swift 2 iPhoneアプリ開発 入門ノート Swift 2 + Xcode 7対応
Swiftをこれから学ぶ方に向けて、図解入りで丁寧に解説されています。基本に重点を置き解説されていますので、応用の段階に入った時もスムーズに実装できます。サンプルコードも多数収録されており、大変充実した内容となっています。