leftBarButtonItem戻るボタンの代わりとして機能する (カスタム ビューを使用する) があります (カスタム ビューは では使用できないため) backBarButtonItem。rightBarButtonItem(カスタム ビューも使用) とカスタムの titleView もあります。
leftBarButtonItemが特定の幅よりも小さい場合、すべてがうまく機能します。はrightBarButtonItem巨大になる可能性があり、titleView は使用可能なスペースに合わせてサイズ変更および切り捨てられます。
ただし、同じ寸法を逆にすると (rightBarButtonItem特定の幅よりも小さくて大きいleftBarButtonItem)、 はleftBarButtonItem完全に消え、以前はと のtitleView両方を保持していたスペース全体に収まるように が伸びます。leftBarButtonItemtitleView
カスタムビューを交換して、それが私が行ったことかどうかを確認しようとしましたが、同じ問題が交換されたビューで持続し、leftBarButtonItem. また、カスタムなしで通常のタイトルを使用しようとしましたがtitleView、役に立ちませんでした。
のドキュメントではUINavigationItem、leftBarButtonItems「配列内のすべての項目を表示する十分なスペースがない場合、タイトル ビュー (存在する場合) またはバーの右側のボタンに重なるものは表示されません。表示されました。」ただし、ボタンとタイトルの両方が収まる十分なスペースが必要です。これは、タイトルが大きくrightBarButtonItem切り詰められていることからもわかります。言うまでもなく、 は複数ではなく 1 つだけでありleftBarButtonItem、戻るボタンの機能を置き換えるために表示する必要があります。
これが起こらないようにする方法についてのアイデアはありますか? 私が使用しているコードのスニペットは次のとおりです。
self.navigationItem.titleView = [[TitleView alloc] initWithFrame:CGRectMake(0, 0, 220, 44)];
self.navigationItem.titleView.backgroundColor=[UIColor clearColor];
FollowButton *follow = [[FollowButton alloc] initWithFrame:CGRectMake(0, 0, 62, 34)];
UIBarButtonItem *followButton = [[UIBarButtonItem alloc] initWithCustomView:follow];
self.navigationItem.rightBarButtonItem = followButton;
BackButton *back = [[BackButton alloc] initWithFrame:CGRectMake(0, 0, 108, 34)];
[back addTarget:self.navigationController action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:back];
self.navigationItem.leftBarButtonItem = backButton;