如何为导航控制器设置默认标题视图?

时间:2013-07-11 01:46:24

标签: iphone ios uinavigationbar

我正在编写一个iOS 6应用程序,我想设置一个标题视图,该视图将显示我的所有视图,除非我另有说明。我尝试了[[UINavigationBar appearance] setTitleView:view][[UIBarButtonItem appearance] setTitleView:view],但都没有效果。

注意:此标题视图不能是标签,它必须是一个按钮。

有什么想法吗?

5 个答案:

答案 0 :(得分:1)

您使用的是UINavigationController吗?

如果是这样,请使用以下内容设置背景图像和字体:

[[UINavigationBar appearance] setTitleTextAttributes:
             [NSDictionary dictionaryWithObjectsAndKeys:
                       [UIColor blackColor], UITextAttributeTextColor,
                       [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:22.0], UITextAttributeFont,nil]];

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBar.png"]           forBarMetrics:UIBarMetricsDefault];

如果您只想将更改应用于UIViewController的某些特定子类中的导航栏,请使用以下内容:

[[UINavigationBar appearanceWhenContainedIn:[VCSubclassToChangeAppearance class], nil] 
setBackgroundImage:[UIImage imageNamed:@"navBar.png"]
forBarMetrics:UIBarMetricsDefault];

您还可以使用此方法为规则创建例外,例如为所有人设置一个外观,特别是一个外观。

如果要更改导航栏上标准按钮的外观,请执行以下操作:

UIImage *standardBackgroundImage = [[UIImage imageNamed:@"navBarButton.png"]
                                    resizableImageWithCapInsets:UIEdgeInsetsMake(0, 8, 0, 8)];

[[UIBarButtonItem appearance] setBackgroundImage:standardBackgroundImage
                                        forState:UIControlStateNormal
                                           style:UIBarButtonItemStyleBordered
                                      barMetrics:UIBarMetricsDefault];

在此示例中,每个导航栏按钮(不是后退按钮)并且是UIBarButtonItemStyleBordered变种,将使用该图像。您需要为特定的按钮图像处理UIEdgeInsets。

答案 1 :(得分:0)

您可以尝试在导航栏中添加子视图(UITextField):

UITextField *titleField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 100.0, 60.0)];
titleField.text = @"a title";
titleField.center = self.navigationController.navigationBar.center;
[self.navigationController.navigationBar addSubview:titleField];

答案 2 :(得分:0)

  1. 您可以通过命令在每个viewController的set set title之后定义一个全局变量:

    self.title = kDefaultTitle

  2. 如果你使用故事板,你可以在右栏标题属性中的每个viewController上设置它

  3. 最终:我认为您可以自动设置所有视图标题(将攻击排除在核心之外)

答案 3 :(得分:0)

由于不同视图控制器的UIBarButtonItem将更改导航栏的标题视图,因此无法全局设置标题视图。您可以使用@Jake方法或子类UIViewController来覆盖setTitle方法。并使用该类作为所有自己的视图控制器的超类。

答案 4 :(得分:0)

您可以通过以下代码将任何视图放入任何 ViewController 中的titleView,该视图包含在 UINavigationController 中。

self.navigationItem.titleView = yourView;

试试这个。