0

UINavigationコントローラーを使用してxCode4.3.2でtabBarアプリケーションを作成しています。AppDelegateで次のコードを使用しています

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
   // Override point for customization after application launch.
   UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];
   UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease];
   self.tabBarController = [[[UITabBarController alloc] init] autorelease];
   self.tabBarController.viewControllers = [NSArray arrayWithObjects:
                                         [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease], viewController2, nil];
   self.window.rootViewController = self.tabBarController;
   [self.window makeKeyAndVisible];
   return YES;
}

ここで問題となるのは、ナビゲーションバーにカスタムの背景画像が必要なことです。私が見つけた解決策は、UINavigationBarのサブクラスを作成し、InterfaceBuilderで新しいサブクラスを設定することです。しかし、私の場合、プログラムでナビゲーションコントローラーを設定していますが、これを実現するにはどうすればよいですか?私もカテゴリを作成してみました

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"NavigationBar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end  

しかし、それはまったく機能していません。

4

1 に答える 1

6

ナビゲーションバーの場合は、次を使用します。

UIImage *image = [UIImage imageNamed: @"NavBarImage.png"];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];`

and for Tabbar:

    // not supported on iOS4    
    UITabBar *tabBar = [tabController tabBar];
    if ([tabBar respondsToSelector:@selector(setBackgroundImage:)])
    {
        // set it just for this instance
        [tabBar setBackgroundImage:[UIImage imageNamed:@"tabbar_brn.jpg"]];

        // set for all
        // [[UITabBar appearance] setBackgroundImage: ...
    }
    else
    {
        // ios 4 code here
    }

ありがとう

于 2012-06-15T04:57:07.410 に答える