2013-02-01 4 views
5

テーブルビューのナビゲーションバーにカスタムシャドウイメージを設定しようとしていますが、一部のビューでのみ表示されます。私はテーブルビューのスタイルを設定するスーパークラスを作成しました。NavigationBar setShadowImageが常に動作しない

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Set navigation bar background 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault]; 

    // Set navigation bar shadow imag 
    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

私のアプリの起動時に表示されるビューでは、影が表示されません。しかし、ナビゲーションバーの[+]ボタンを押して、私の '新しい項目を追加する' 'テーブルビューを開くと、影が表示されます。

誰かが正しい方向に私を向けることができますか?

+0

外観プロキシを使用する必要があります。 – dasdom

+0

ありがとうございます。私はそれを試みましたが、同じ結果でした。 – lsdevries

+0

'viewDidLoad'の' self.navigationController'が 'nil'でないことを確認してください! – MoLice

答えて

7

Appearanceプロキシが動作するはずです。

起動時にどこか(AppDelegateなど)呼び出すだけです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self customizeAppearance]; 
    return YES; 
} 

- (void) customizeAppearance 
{ 
    // Set the background image for *all* UINavigationBars 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground"] forBarMetrics:UIBarMetricsDefault]; 

    // Set the shadow image for *all* UINavigationBars 
    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

    //add other appearance stuff here... 
} 

あなたはその中に複数のUINavigationControllerさんとストーリーボードとセグエのプッシュナビゲーションコントローラのの束を作成する場合は、あなたがここでの問題であるかもしれない壊れたビューコントローラの構造を得る可能性があります。

別の可能性のある問題は、nibファイルまたはストーリーボードのどこかのナビゲーションバーのClip Subviewsオプションです。あなたが影(画像)をしたい場合は、それがオフになっていることを確認してください!ところで

ClipSubviews

あなたはimageNamedを使用する場合は、ファイルの拡張子を含める必要はありません。

+2

うわー、ありがとう!チェックしていないクリップのサブビューがトリックでした。スタイリングをスーパークラスに入れたのは、すべてのスタイリングを一箇所に残したかったからです。 – lsdevries

+0

は魅力的に働いた!!ありがとう –

0

試してみてください!

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]]; 
+0

ありがとう、私はすでにそれを試みました。外観プロキシを使用すると、すべてのテーブルビューでこれを使用するよりも異なる結果が得られるはずですか?: [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@ "navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault; [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@ "navigationbarshadow.png"]]; – lsdevries

9

UINavigationBarにカスタムbackgroudImageを設定する必要がある場合は、shadowImageが動作します。

+0

それは重要な情報です!多くの人が私に年を取ったことを知らないようだ。 – Rikco

関連する問題