【问题标题】:UINavigationBar custom background imageUINavigationBar 自定义背景图片
【发布时间】:2011-06-14 09:20:50
【问题描述】:

我使用这些suggested solutions 为我的 UINavigationBar 提供了一个自定义图像。 (为了更明确:我在 AppDelegate.m 文件中向 UINavigationBar 添加了一个类别)。 到目前为止,这工作得很好,我没有任何问题。然而,现在我在最近的 iOS5 测试版上运行我的应用程序。 UINavigationBar 现在又是空白了。

由于我安装的所有其他使用自定义图像的应用程序仍然表现相同,我猜我的代码中一定存在“错误”,iOS5 现在不再支持。

那么有人知道我采用上述解决方案可能会出现什么问题吗?

我发现使它工作的唯一方法是创建一个真正的 UINavigationBar 子类,然后在所有视图中告诉 IB 使用该自定义类。不过没那么优雅……

【问题讨论】:

  • 看看这里使用新的iOS5 API for UINavigationBar的setBackgroundImage:forBarMetrics:
  • 您是否找到了您正在寻找的解决方案?我知道 iOS5 需要使用 setBackgroundImage:forBarMetrics:,但是您仍然可以在 AppDelegate 中的 Category 中使用它吗?我找到的所有解决方案都要求我为每个 ViewController 添加一些内容以支持 iOS5,这是我一开始就试图避免的。
  • 从到目前为止的所有回复来看,似乎没有像之前的 iOS 5 那样只有一个地方的解决方案。所以我认为这是实现这一目标的唯一方法将不是直接从 UIViewController 继承你所有的 ViewControllers,而是从你自己的一个简单地实现 setBackgroundImage:forBarMetrics: 默认情况下...

标签: ios custom-controls ios5


【解决方案1】:

要同时支持这两个版本,需要询问是否有 setBackgroundImage:forBarMetrics: 方法。

看看我的博文: http://www.mladjanantic.com/setting-custom-background-for-uinavigationbar-what-will-work-on-ios5-and-ios4-too/

【讨论】:

  • 您能否在您的博文中添加一些更相关的部分?谢谢。
【解决方案2】:

另一种可能的“hacky”解决方案是创建一个自定义视图并将其作为子视图插入 UINavigationBar - 可能它仍然可以工作:

UIView *backgroundView = ...
[navigationBar insertSubview:backgroundView atIndex:0];

或查看 iOS5 文档中更新的 UINavigationBar 类参考,了解设置自定义背景的内置方法

【讨论】:

    【解决方案3】:

    使用此代码

            UIImage *backgroundImage = [UIImage imageNamed:@"strip.png"];
            [upnavbar setBackgroundImage:backgroundImage forBarMetrics:UIBarMetricsDefault];
    

    这会起作用。

    【讨论】:

    • 如果您可以发布两个问题的相同答案,请考虑将它们标记为重复。
    【解决方案4】:

    这对我的工具栏有用

    //toolBar background image set based on iOS version
        [[UIDevice currentDevice] systemVersion];
    
        if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {
    
            //iOS 5
            UIImage *toolBarIMG = [UIImage imageNamed: @"toolBar_brown.png"];  
    
            if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
                [toolBar setBackgroundImage:toolBarIMG forToolbarPosition:0 barMetrics:0]; 
            }
    
        } else {
    
            //iOS 4
            [toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"toolBar_brown.png"]] autorelease] atIndex:0]; 
    
        }
    

    【讨论】:

    • 这会在离开和返回视图时隐藏后退按钮。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    相关资源
    最近更新 更多