2011-09-21 44 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添加爲子視圖以在所有視圖上顯示。

相關問題