1

ストーリーボードを使用してカスタム ナビゲーション バーをセットアップする方法を考えています。アプリのビュー コントローラーにナビゲーション バーを直接追加しました。

VC はナビゲーション コントローラー スタックに直接存在しませんが、そのまま表示されます。アプリケーションの主なポイントとしての種類。アプリケーション全体で同じナビゲーション バーが使用されます。

アプリケーション全体でナビゲーション バーのスタイルを設定したいと考えています。以前は、ナビゲーション コントローラー内にあるときに次を使用していましたが、現在は不要であり、実際にはナビゲーション スタックに残りません。

[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];

VC に単純に追加されたアイテムである今、これをスタイルする正しい方法は何ですか? バーは他の VC にも追加されるため、再利用できるはずです。UINavigationBar をサブクラス化し、これをナビゲーション バーのストーリーボードでも変更しようとしましたが、スタイリングを実装する方法がわかりません。

このサブクラスの drawRect メソッドを変更しようとしましたが、変更は行われません。これをサブクラス化し、スタイリングを追加する方法について、Apple から直接ドキュメントを見つけることができません。

4

3 に答える 3

2

さて、私にとって何がうまくいったかを教えてください:

navigationBar と UINavigationController もサブクラス化するため、initWithCoder で setValue:forKey を割り当てます。

- (id)initWithCoder:(NSCoder *)aDecoder {
    if(!(self = [super initWithCoder:aDecoder])) return nil;

    CDANavigationBar *navBar = [[CDANavigationBar alloc] init];
    [self setValue:navBar forKey:@"navigationBar"];

    return self;
}

StoryBoard で、UINavigationController を独自のものに割り当てます。

于 2013-04-30T14:54:31.293 に答える
2

Xcode 5 (およびおそらく 4) では、UINavigationController の UINavigationBar のクラスを独自のカスタム クラスに変更できます。次に、必要に応じてカスタマイズを initWithCoder: に追加します。

于 2014-04-30T20:19:36.907 に答える