1

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

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

有任何想法吗?

4

5 回答 5

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。

于 2013-07-11T02:10:04.283 回答
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];
于 2013-07-11T01:52:52.247 回答
0
  1. 您可以通过命令在每个 viewController 的设置标题之后定义一个全局变量:

    self.title = kDefaultTitle

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

  3. Final:我认为您可以自动设置所有视图标题(不包括您对核心的攻击)
于 2013-07-11T02:00:50.230 回答
0

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

于 2013-07-11T02:15:59.753 回答
0

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

self.navigationItem.titleView = yourView;

试试这个。

于 2013-07-11T07:23:57.183 回答