5

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

- (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"]];

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

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

4

3 に答える 3

9

backgroudImageUINavigationBar のカスタムを設定する必要がありますshadowImage

于 2015-01-03T08:59:05.707 に答える
7

外観プロキシが機能するはずです。

起動時にどこか(たとえば、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と多数のsegueのプッシュナビゲーションコントローラーを含むストーリーボードを作成すると、View Controller構造が破損する可能性があり、これがここで問題になる可能性があります。

もう1つの考えられる問題はClip Subviews、nibファイルまたはストーリーボードのどこかにあるナビゲーションバーのオプションである可能性があります。シャドウ(画像)が必要な場合は、必ずオフにしてください。

ClipSubviews

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

于 2013-02-02T12:57:25.913 に答える
0

これを試して !

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]];
于 2013-02-01T12:12:40.343 に答える