2011-09-21 40 views
1

我们的客户决定他们的应用程序没有足够的品牌,他们希望把他们的标志放在每个屏幕顶部的横幅中。徽标横幅与导航栏标题的高度大致相同,并且可以是静态图像。我们可以在每个屏幕的顶部放置一个静态图像横幅图像吗?

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

看看iOS应用程序,显然这并不常见。有没有人需要这样做,你是如何做到的?

感谢您的任何提示!

回答

0

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

1

这不是一个理想的方法,说实话,因为正如你所提到的,它不是很常见。事实上,苹果公司可能不接受取代导航栏等应用程序。

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

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)]; 
} 
+0

苹果真的不希望人们重写'-drawRect:'。更好的解决方案是只设置图层的“内容”属性。 – LucasTizma

+0

你从哪里得到这些信息? drawRect:仍然记录为可覆盖的方法:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html –

0

你可以保持横幅标志中的AppDelegate文件为BannerLogo设置框架。这与展示带有iAd或AdMob的广告的情况相同。我已经完成了在所有屏幕上显示AdMob。您需要将BannerLogo添加为子视图以在所有视图上显示。

相关问题