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