2011-09-08 100 views
0

我被困在自定義我的應用程序的導航欄。 我以編程方式添加了導航控制器。 事實上,在方法應用:didFinishLanchingWithOptions我的應用程序委託的, 我已經添加和使用下面的代碼隱藏導航欄:自定義導航欄的背景圖像編程創建

self.window.rootViewController = self.viewController; 
// ListingNav previously declared as instance variable 
self.ListingNav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
self.ListingNav.navigationBarHidden = YES; 
[self.window addSubView:ListingNav.view]; 
[self.window makeKeyAndVisible]; 
return YES; 

現在,我想將圖像設置爲一導航欄背景,爲「後退」按鈕設置另一個背景圖片,並在同一導航欄的右側添加另一個按鈕,並帶有自己的背景圖片。有關如何進行的任何想法?

Thx的幫助,

斯蒂芬

回答

1

子類UINavigationBar的並覆蓋其的drawRect方法繪製的圖像。

如果您的UINavigationController是通過InterfaceBuilder創建的,那麼您可以輕鬆更改關聯的UINavigationBar的類。如果通過代碼創建UINavigationController,則可以使用object_setClass。 (this one for example

有一個很多問題已在StackOverflow上完全相同的主題,不要猶豫,搜索網站上的「NavigationController背景」。

+0

但你可以在我不使用IB代碼中看到的......這就是問題 – Steve

+0

因此建議使用'object_setClass'。 – AliSoftware

+0

請注意,我不能談論它,因爲它仍然處於NDA下,但如果您有開發者帳戶,我鼓勵您查看在iOS5中添加到UINavigationBar的新屬性,您還會發現有用的內容;) – AliSoftware

1

您可以自定義導航欄而不隱藏它。只需使用addSubview方法添加這些組件即可。

UIImageView *imageview = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"bg.png"]]; 
[self.navigationController.navigationBar addSubview:imageview]; 

[self.navigationController.navigationBar sendSubviewToBack:imageview]; 
[imageview release]; 

既然你需要一個自定義按鈕,你可以用同樣的方法添加的UIButton:

背景圖像可以如下補充。用自己的背景創建一個新的UIButton並添加它。

0

使用此代碼.....

 [self.navigationController.navigationBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@""]]]; 
2

你可以試試:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"ImageNameWithOutExtension"] forBarMetrics: UIBarMetricsDefault];