現在、UINavigationBar の leftBarButton のボタン イメージがあります。このボタンと UINavigationBar の左端の間のスペースをなくす方法はありますか? UINavigationBar の背景用のカスタム イメージを作成することだけを考えましたが、他の画面で生成される戻るボタンを使用できるようにしたいと考えています。アイデア?
3 に答える
Try this, it works for me:
CGRect frame = self.navigationController.navigationBar.frame;
frame.origin.x = -10;
self.navigationController.navigationBar.frame = frame;
Basically, set the navigation bar x coordinate to negative not the bar item.
ナビゲーション バー自体のレイアウト ロジックは、左側のスペースを維持しようとします。
ナビゲーション項目 (UIBarButtonItem initWithCustomView:) を設定するときにカスタム ビューを指定し、負の x 原点を持つビューを渡すことができますが、ナビゲーション バーはそのような原点を無視すると思います。(そのビューへの参照を保持して、ナビゲーション バーのレイアウトが終了した後に左に移動することもできます)
別のオプションは、独自のカスタム ナビゲーション バーを作成することです。おそらく、ナビゲーション バーの中央にカスタム ビューを配置し、バーの幅と高さをカバーするように引き伸ばします。
iOS7では、左のスペースを修正するためにダミーのbarbuttonitemを追加するだけで、ダミーを最初に追加し、右を最後に追加する必要があります
左の例では、元のアイテムを設定した後、またはストーリーボードを使用してボタンを設定している場合は viewdidload に追加する必要があります。
NSMutableArray *buttons = [[NSMutableArray alloc] init];
UIBarButtonItem *spacerItem = [[UIBarButtonItem alloc] init];
[buttons addObject:spacerItem];
for(UIBarButtonItem *item in self.leftBarButtonItems){
[buttons addObject:item];
}
[self setLeftBarButtonItems:[NSArray arrayWithArray:buttons] animated:NO];