0

我正在使用 iOS 5UINavigationBarUIAppearance协议来自定义我的所有导航栏。

这是我的自定义功能:

- (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];
}

我有两个问题:

  • 首先是颜色不是clearColor黑色而是黑色。有什么建议么?

  • 标题视图根本没有出现。Ray Wenderlich[[rootViewController navigationItem] setTitleView: [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"miniLogo.png"]]]通过添加 a: in来展示如何做到这一点applicationDidFinishLaunching。但是这样做的问题是标题视图只会被添加到根视图控制器中。我正在使用 aUINavigationController并且当我厌倦了rootViewControllernavigationController(AppDelegate 中我的导航控制器的名称)替换时,我根本看不到标题视图。我该如何解决?为什么它不起作用customizeApperance()?使用外观的全部意义不就是只创建一次标题视图(就像我在函数上方所做的那样)并在所有导航栏中使其全局化吗?我怎样才能做到这一点?

4

3 回答 3

6

[UIColor clearColor]是完全透明的颜色 (alpha = 0)。将其设置为浅色会使(黑色)背景发光。也许你想要[UIColor whiteColor]

titleView是 的一个属性UINavigationItem,每个视图控制器都有自己的navigationItem. 因此,您不能全局设置标题视图。UINavigationBar但是您可以使用外观协议设置背景图像,这可能会有所帮助:

[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];  
于 2012-09-13T17:20:04.820 回答
1

你试过titleView.opaque = NO;吗?如果设置为YES(即默认情况下,因为您使用的是 initWithImage:),绘图系统将假定您的视图填充了它的整个边界,并且不会费心绘制任何与它的框架重叠的东西。

于 2012-10-12T16:45:24.020 回答
0

setTitleView: 是 NavigationItem 上的一个方法。但是你在导航栏上调用它

于 2013-08-22T13:30:48.123 回答