ナビゲーションバーをカスタムストレッチ画像に変更し、戻るボタンを別の色に変えることができました。ナビゲーションバーでレベル番号とコインの合計を設定するのに問題があります。
進捗状況のHUDなどをいじるよりも簡単な方法が必要だと思います。これが私の研究で言及されていることのすべてです。
私は以下に添付されているものと同様の外観を実現しようとしています-グラフィックではなく要素ごとに。
よろしくお願いします。
ナビゲーションバーをカスタムストレッチ画像に変更し、戻るボタンを別の色に変えることができました。ナビゲーションバーでレベル番号とコインの合計を設定するのに問題があります。
進捗状況のHUDなどをいじるよりも簡単な方法が必要だと思います。これが私の研究で言及されていることのすべてです。
私は以下に添付されているものと同様の外観を実現しようとしています-グラフィックではなく要素ごとに。
よろしくお願いします。
2 つのソリューション:
独自の要素を使用してナビゲーション バー全体をカスタム ビューにし、必要に応じて更新します。titleView
のプロパティを使用してこれを行いますUINavigationItem
。
leftBarButtonItem
、titleView
、およびrightBarButtonItem
を独自のカスタム ビューで使用します。
(視覚的に) よりスケーラブルであるため、2 番目の方法を好みます。つまり、View Controller は、ランドスケープ モード、iPad、または奇妙なサイズのポップオーバーなどで正しくレイアウトされます。左のアイテムは左に配置され、右から右に、真ん中に真ん中に。ただし、左項目と右項目のタイプが である必要があるため、少し複雑ですUIBarButtonItem
。次のように回避できます。
// Set up the red star thing in the middle with a number 6 on it
MyRedStarView* redStarView = [MyRedStarView redStarViewWithValue:6];
self.navigationItem.titleView = redStarView;
// Set up the 'word' button on the left
MyWordButton* wordButton = [MyWordButton defaultWordButton];
UIView* buttonHolderView = [[UIView alloc] initWithFrame:CGRectZero];
buttonHolderView.backgroundColor = [UIColor clearColor];
[buttonHolderView addSubview:wordButton];
buttonHolderView.frame = wordButton.frame;
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:buttonHolderView];
// Set up the coin indicator on the right
MyCoinView* coinView = [MyCoinView coinViewWithValue:515];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:coinView];
ホルダー ビューで (leftBarButtonItem の) ボタンをどのようにラップしたかに注意してください。これは、ボタンで何らかのビュー遷移を行いたい場合にのみ必要です。たとえば、異なるコンテキストで変化し、ホルダー ビューからボタンを削除し、別のボタンを (ビュー トランジションを使用して) 追加することでトランジションをアニメーション化する場合などです。右側のバー ボタン項目では、さまざまなアプローチを示すためだけに、これを行いませんでした。
もちろん、いくつかの偽のビュー タイプを使用してデモを行いました。実際には、プロパティ値を設定して数値の表示を更新できるように、これらへの独自の参照を作成します。
navigationView が既に配置されていると仮定して、次のコードを試してください
- (void)viewDidLoad
{
// Custom Navigation Bar
// -----------------------------------
UIView *navigationCustomTitle = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 200.0, 20.0)];
navigationCustomTitle.backgroundColor = [UIColor clearColor];
UIImageView *icon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon.png"]];
UILabel *titleCustomLabel = [[UILabel alloc] initWithFrame:CGRectMake(30.0, 0.0, 260.0, 20.0)];
titleCustomLabel.text = @"A nice title";
titleCustomLabel.textColor = [UIColor whiteColor];
titleCustomLabel.backgroundColor = [UIColor clearColor];
titleCustomLabel.font = [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:(16.0)];
[navigationCustomTitle addSubview:titleCustomLabel];
[navigationCustomTitle addSubview:icon];
self.navigationItem.titleView = navigationCustomTitle;
}