こんにちは。SI部の鳥居です。

今回は最近リリースされたiOS7について綴ろうと思います。

大きく異なる点は見た目。今回からはフラットデザインというデザインになりました。
アイコンも一新されています。

ユーザビリティの点でもコントロールセンターが追加されています。
これは、iOS搭載端末の画面下部から上にスワイプをすると、WiFi ON/OFF、画面の明るさ変更、
カメラ起動などの設定や、各アプリのアイコンから遷移していくことなく楽に変更することができます。

また、ホームボタン2回押下によるアプリのタスク削除ですが、こちらも上にスワイプすることで
削除できるようになりました。
このようにユーザビリティの向上が見受けられます。

毎度のことではありますが、iOSのアップデートに伴いあわせていく箇所も発生しています。
それらの開発する上での変化について綴っていこうと思います。

■iOS確認方法
iOS毎に処理を分ける必要があることも考えられますので、その際に必要なiOSのバージョンの取り方は以下になります。

NSString *iosVersion = [[UIDevice currentDevice] systemVersion];

文字列で取得するので、iosVersion.intValueで、6や、7をとることができます。

■ナビゲーションバー
iOS6とiOS7でナビゲーションバーが変わってしまいました。
デフォルトの色も異なります(青ベースから白ベースへ)が、iOS7になるとステータスバーと共に透過しています。
それにより、デフォルト時の画面の原点(0, 0)が変わっています。
iOS6だと、ナビゲーションバーの下が原点ですが、iOS7はステータスバーの開始位置が原点となり異なるので
注意が必要です。

iOS7                                                              iOS6
iOS7_navibar_tra               iOS6_navibar_tra

iOS7でナビゲーションバーの透過をやめると、開始位置を同じにすることができます。
iOS7で透過をやめるには以下のコードでできます。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.navigationController.navigationBar.translucent = NO;
}

iOS7                                                              iOS6
iOS7_navibar_non               iOS6_navibar_non

■ナビゲーションバーの色

iOS6にてナビゲーションバーに色を指定するにはUINavigationBarのtintColorを指定することでできましたが、

self.navigationController.navigationBar.tintColor = [UIColor redColor];

これをiOS7で実施すると、ナビゲーションバーのボタンの文字色が変化します。

iOS7                                                              iOS6

iOS7_navi_color              iOS6_navi_color

iOS7でバーの色をかえたいときにはiOS7より追加されたUINavigationBarのbarTintColorへ
指定することで色を変えることができます。

self.navigationController.navigationBar.barTintColor = [UIColor yellowColor];

iOS7

iOS7_navibar_color

このとき、iOSのバージョンチェックなどをおこなわないと、iOS6では存在しない処理のため、
アプリが強制終了してしまうので注意が必要です。
色的なこともあり、iOS6とiOS7でUIを考える必要が多分にあるかと思います。

■Push Notification
Push通知のためのトークンをとる際に
UIApplicationのregisterForRemoteNotificationTypesを呼びますが、この際に
iOS側の設定で通知設定がOFFになっていると
didRegisterForRemoteNotificationsWithDeviceTokenが通知されない現象を確認しました。

Push通知を利用する際には、enabledRemoteNotificationTypesで通知設定が
ONとなっているかを確認する必要があるかもしれません。
(何かしら設定がONになっていると応答が帰ってきます)

■最後に
iOS7でデザインがガラッと変わりました。
それに伴い修正箇所等もいろいろ必要かと思いますが、そういう点もiPhone開発の面白い部分と楽しんでデザインを考えていければと思います。