iOS7対応したときの備忘録です。
・スワイプによる戻る機能をOFF
iOS7から標準でスワイプによる戻る機能が実装されましたが、自前でタッチイベントを実装している場合などアプリによってはこれが邪魔になる場合があります。
この機能をOFFにするには、下記のように設定します。
※interactivePopGestureRecognizerプロパティは、iOS7で追加されたものなので、実装判定を行ってからNOに設定します。
1 2 3 4 |
if ( [self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)] ) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; } |
・scrollViewのinsets自動調整をOFF
scrollView使用時、自動でinsetsを調整されてしまうため、ビュー配置がうまくいかないことがあります。
(私の場合は、UINavigationControllerを使用していたので、statusBar+navigationBar=64pt分ずれて配置されてしまいました。)
NOに設定すると、自動調整はされなくなります。
1 |
self.automaticallyAdjustsScrollViewInsets = NO; |
・全画面対応
iOS7より半透明のバーになり、バーの後ろのビューの色が透けるようになりました。
私も当初は、タブバーについては表示/非表示どちらもあるので、下だけ拡張し、
self.edgesForExtendedLayout = UIRectEdgeBottom;
に設定していたのですが、navigationBarと同じ色ではなくなり(少し濃い)気になったので、
全画面表示に対応し(デフォルト: UIRectEdgeAll)、ビューの配置はstatusBar+navigationBar分ずらした位置から始めるように変更しました。
※調べたら、navigationBarの色が濃く(黒っぽく)見えたのは、viewの下のwindowの色が透けている為のようです。
windowの背景色を白くすれば解決可能のようです。
・ステータスバーの背景色を変更
UINavigationControllerを使用している場合、ステータスバーはナビゲーションバーの背景色を引き継ぐので、ナビゲーションバーの背景色を変えると、ステータスバーの背景色も同じ色に変わってしまいます。
ステータスバーの背景色をナビゲーションバーの背景色と違うものにしたかったので、方法を検索したのですが、なかなか見つかりませんでした。
StackOverflowで同様の問題を抱えている人がいたので、そこに投稿されていた解決策を試してみたところ上手くいきました。
(StackOverflow : iOS 7 status bar back to iOS 6 style?)
それは、ステータスバーと同じサイズのUIViewを用意し、好きな背景色に設定し、self.windowにaddSubviewする方法です。
AppDelegate.mファイルのapplication:didFinishLaunchingWithOptions:メソッドの[self.window makeKeyAndVisible]の後に下記を追加します。
1 2 3 4 |
// ステータスバーの背景色を変更(viewを追加) UIView *addStatusBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.window.frame.size.width, 20)]; addStatusBar.backgroundColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0]; [self.window addSubview:addStatusBar]; |
<参考>
・Apple 「iOS7 UI移行ガイド」