我正在使用iOS 5 UINavigationBar
的{{1}}协议来自定义我的所有导航栏。
这是我的自定义功能:
UIAppearance
我有两个问题:
首先是颜色不是- (void)customizeApperance
{
[[UINavigationBar appearance] setTintColor:[UIColor clearColor]];
[[UINavigationBar appearance] setAlpha:0.7];
UIImageView *titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"title.png"]];
[[UINavigationBar appearance] setTitleView:titleView];
}
而是黑色。有什么建议吗?
标题视图根本没有出现。 Ray Wenderlich通过在clearColor
中添加[[rootViewController navigationItem] setTitleView: [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"miniLogo.png"]]]
来说明如何执行此操作。但问题是标题视图只会添加到根视图控制器中。我正在使用applicationDidFinishLaunching
,当我厌倦用UINavigationController
替换rootViewController
(AppDelegate中导航控制器的名称)时,我根本看不到标题视图。我该如何解决这个问题?为什么它不能在navigationController
中运行?使用外观的关键不仅仅是创建一次标题视图(就像我在函数上面所做的那样)并且在所有导航栏中都是全局的吗?我怎样才能做到这一点?
答案 0 :(得分:6)
[UIColor clearColor]
是完全透明的颜色(alpha = 0)。将其设置为浅色可使(黑色)背景闪耀。也许你想要[UIColor whiteColor]
?
titleView
是UINavigationItem
的属性,每个视图控制器都有自己的navigationItem
。因此,您无法全局设置标题视图。但您可以使用外观协议设置UINavigationBar
的背景图像,这可能有助于:
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
答案 1 :(得分:1)
你试过titleView.opaque = NO;
吗?如果将其设置为YES
(即默认情况下,因为您正在使用initWithImage :),绘图系统将假设您的视图填充其整个边界,并且不会打算绘制与其框架重叠的任何内容。
答案 2 :(得分:0)
setTitleView:是NavigationItem上的一个方法。但是你在导航栏上调用它