如何将标题图像固定在Tab应用程序的顶部?

时间:2012-04-30 19:30:44

标签: iphone objective-c

我想创建一个标签应用程序,其中包含始终存在的标题图像,无论标签项目处于活动状态。

示例将是Foursquare:

enter image description here

我希望能够放置按钮,并在该标题上显示不同的信息。

这是一个简单的导航栏还是别的什么?

3 个答案:

答案 0 :(得分:3)

通常,每个选项卡都与一个viewController相关联。您可以在选择“选项卡式应用程序”时xcode创建的样板中注意到它。 然后,在每个viewDidLoad或每个viewcontroller的init中,您可以设置:

self.navigationItem.titleView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];

然后只需使用每个viewController上的控件更改self.navigationItem.leftBarButtonItemself.navigationItem.rightBarButtonItem

修改

在appDelegate中(在didFinishLaunchingWithOptions方法中)如果你想使用navigationcontrollers,你可以设置这样的东西:

 UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
 UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
 UINavigationController *myNav1=[[UINavigationController alloc] initWithRootViewController:viewController1];
 UINavigationController *myNav2=[[UINavigationController alloc] initWithRootViewController:viewController2];
 UIImage *navBackgroundImg = [UIImage imageNamed:@"bg_navBar.png"];
 UIImage *tabBackgroundImg = [UIImage imageNamed:@"bg_tabBar.png"];
 [myNav1.navigationBar setBackgroundImage:navBackgroundImg forBarMetrics:UIBarMetricsDefault];//iOS 5 only
 [myNav2.navigationBar setBackgroundImage:navBackgroundImg forBarMetrics:UIBarMetricsDefault];//iOS 5 only
 [[UITabBar appearance] setBackgroundImage:tabBackgroundImg];//iOS 5 only
 self.tabBarController.viewControllers = [NSArray arrayWithObjects:myNav1, myNav2, nil];
 self.window.rootViewController = self.tabBarController;

答案 1 :(得分:0)

看起来像一个简单的导航栏,但它们并不简单。您需要在栏上放置/创建NavigationItem(在放置/创建栏本身之后),然后将titleView设置为包含图像的自定义视图。根据文档,左栏按钮(在第一个屏幕中关闭)必须为零,否则将忽略titleView。虽然您可以在此自定义视图中为左按钮放置按钮。

答案 2 :(得分:0)

我发现最容易做的就是写:

- (void)viewDidLoad
{
    [[UINavigationBar appearance] setBackgroundImage:
     [UIImage imageNamed:@"UINavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}

在我的MainViewController中,在每个视图控制器上创建的所有导航栏都是这样配置的。