開発のヒホ

iOSとかAndroidとかのアプリを開発するのに四苦八苦するブログ

複数の枠なしボタンを線で別けてUINavigationBarに設置する

iOS7になって、UINavigationBarに配置するUIBarButtonItemの枠が消えました。

f:id:hihokaruta:20130914202330p:plain:w320

iOS6以前のUIに慣れたユーザーがこれに慣れるのは時間がかかるかも。

枠がないのが良いのかどうかは置いといて、
この仕様に対応させるときに、複数ボタン置くと問題が起こります。 f:id:hihokaruta:20130914202707p:plain:w320

Apple的にはこれは有りなのかわかりませんが、さすがにちょっと不快です。
まぁ、アイコンにしろってことかもしれませんが・・・
f:id:hihokaruta:20130914202946p:plain:w320

ということで、暫定的な対処ですが、ボタン同士の間に線を引いてごまかしてみました。

やり方は簡単。 間に縦線みたいなUIViewを入れるだけです。

    UIBarButtonItem* item0 = [[UIBarButtonItem alloc] initWithTitle:@"シェア"
                                                              style:UIBarButtonItemStylePlain
                                                             target:nil
                                                             action:nil]  ;
    UIBarButtonItem* item1 = [[UIBarButtonItem alloc] initWithTitle:@"保存"
                                                              style:UIBarButtonItemStylePlain
                                                             target:nil
                                                             action:nil] ;
    
    // 区分用のViewを作成
    float sepa_height = CGRectGetHeight(self.navigationController.navigationBar.frame) - 10 ;
    UIView* separator = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, sepa_height)] ;
    separator.backgroundColor = self.view.tintColor ;
    UIBarButtonItem* itemS = [[UIBarButtonItem alloc] initWithCustomView:separator] ;
    
    self.navigationItem.rightBarButtonItems = @[item0, itemS, item1] ;

こんな感じになります。
f:id:hihokaruta:20130914202759p:plain:w320

あとはグラデーション入れるなり画像にするなりでなんとかなりそうですね。
どうでもいいアプリをとりあえずiOS7に対応させるときとかにどうぞ。