我们可以在每个屏幕的顶部放置一个静态图像横幅图像吗?

时间:2011-09-21 16:07:42

标签: iphone objective-c ios uinavigationcontroller

我们的客户认为他们的应用程序没有足够的品牌,他们希望将他们的徽标放在每个屏幕顶部的横幅中。徽标横幅与导航栏标题的高度大致相同,只能是静态图像。

我们的应用程序有许多不同的屏幕,包括许多由UINavigationController驱动的屏幕。我们无法将徽标放入导航控制器的“标题”部分,因为我们无法显示该视图的标题。

看看iOS应用程序,很明显这并不常见。以前有没有人必须这样做,你是如何完成它的?

感谢您的任何提示!

4 个答案:

答案 0 :(得分:1)

老实说,这不是一种理想的方法,因为正如你所提到的,它并不常见。实际上,Apple可能不会接受取代导航栏等内容的应用程序。

在任何情况下,如果您必须这样做,您可以在应用程序委托中直接向您的窗口添加某种横幅视图。在此之后,您必须确保将窗口的根视图控制器的框架设置为横幅广告的可见部分下方。从这里开始,其余视图将包含在您指定的帧中,通常是屏幕的大小。

答案 1 :(得分:0)

您可以将徽标添加到应用程序的MainWindow,并为所有viewControllers背景设置透明度。但请注意,这意味着您的所有viewControllers将共享相同的背景(来自MainWindow的那个)。

答案 2 :(得分:0)

您可以这样做 - 查看XFactor UK应用程序的示例(http://itunes.apple.com/gb/app/the-x-factor-uk/id455682741?mt=8) - 整个应用程序中都标有导航栏。

坏消息是很难做到 - 我们最终将一个类别应用于UINavigationBar来覆盖drawRect并将背景放在那里,例如:

@implementation UINavigationBar (extras)

- (void)drawRect:(CGRect)rect {

    UIImage *image;

    if (self.frame.size.width>320) {
        image = [UIImage imageNamed: @"NavigationBarWide.png"];
    } else {
        image = [UIImage imageNamed: @"NavigationBar.png"];
    }

    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

答案 3 :(得分:0)

您可以在AppDelegate文件中保留横幅徽标,并为BannerLogo设置框架。这与使用iAd或AdMobs展示广告相同。我这样做是为了在所有屏幕上显示AdMob。您需要将BannerLogo添加为子视图以在所有视图上显示。