0

すべてのナビゲーション バーをカスタマイズするために、iOS 5UINavigationBarのプロトコルを使用しています。UIAppearance

ここに私のカスタマイズ機能があります:

- (void)customizeApperance
{
    [[UINavigationBar appearance] setTintColor:[UIColor clearColor]];
    [[UINavigationBar appearance] setAlpha:0.7];
    UIImageView *titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"title.png"]];
    [[UINavigationBar appearance] setTitleView:titleView];
}

2 つの問題があります。

  • 1つ目は、色clearColorが黒として表示されないことです。助言がありますか?

  • タイトルビューがまったく表示されません。Ray Wenderlich[[rootViewController navigationItem] setTitleView: [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"miniLogo.png"]]]は、 a: inを追加してそれを行う方法を示していますapplicationDidFinishLaunching。しかし、これに関する問題は、タイトル ビューがルート ビュー コントローラーにのみ追加されることです。を使用しており、 (AppDelegate のナビゲーション コントローラーの名前)UINavigationControllerを置き換えるのに疲れたとき、タイトル ビューがまったく表示されません。どうすれば修正できますか?で動作しないのはなぜですか? 外観を使用することの全体的なポイントは、(関数の上で行ったように) 一度タイトル ビューを作成し、すべてのナビゲーション バーでグローバルにすることではないでしょうか? どうすればそれを達成できますか?rootViewControllernavigationControllercustomizeApperance()

4

3 に答える 3

6

[UIColor clearColor]完全に透明な色 (アルファ = 0) です。ティント カラーとして (黒) 背景が透けて見えるように設定します。おそらくあなたがしたい[UIColor whiteColor]ですか?

titleViewは のプロパティでありUINavigationItem、各ビュー コントローラには独自の がありnavigationItemます。したがって、タイトル ビューをグローバルに設定することはできません。ただし、appearance プロトコルを使用して背景画像を設定できUINavigationBarます。おそらくこれが役立ちます。

[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];  
于 2012-09-13T17:20:04.820 に答える
1

試しましたtitleView.opaque = NO;か?これが設定されている場合YES(つまり、initWithImage: を使用しているため、デフォルトで)、描画システムは、ビューがその境界全体を埋めると想定し、そのフレームに重なるものは何も描画しません。

于 2012-10-12T16:45:24.020 に答える
0

setTitleView: NavigationItem のメソッドです。しかし、あなたはナビゲーションバーでそれを呼び出しています

于 2013-08-22T13:30:48.123 に答える