我正在编写一个iOS 6应用程序,我想设置一个标题视图,该视图将显示我的所有视图,除非我另有说明。我尝试了[[UINavigationBar appearance] setTitleView:view]
和[[UIBarButtonItem appearance] setTitleView:view]
,但都没有效果。
注意:此标题视图不能是标签,它必须是一个按钮。
有什么想法吗?
答案 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)
您可以通过命令在每个viewController的set set title之后定义一个全局变量:
self.title = kDefaultTitle
如果你使用故事板,你可以在右栏标题属性中的每个viewController上设置它
答案 3 :(得分:0)
由于不同视图控制器的UIBarButtonItem将更改导航栏的标题视图,因此无法全局设置标题视图。您可以使用@Jake方法或子类UIViewController
来覆盖setTitle
方法。并使用该类作为所有自己的视图控制器的超类。
答案 4 :(得分:0)
您可以通过以下代码将任何视图放入任何 ViewController 中的titleView,该视图包含在 UINavigationController 中。
self.navigationItem.titleView = yourView;
试试这个。