2011-08-08 42 views
0

我有一個自定義類來定義一個特殊的背景圖像取決於我在視圖導航欄我。UINavigationBar的帶有自定義背景圖片

在我設置使用

- (void)drawRect:(CGRect)rect 
圖像類別

問題是,當瀏覽導航控制器中的視圖時,自定義圖像消失,留下一個空白空間320x44(條的大小),直到下一個控制器收攏 - 即大約1秒之後。

這種看起來很醜,我想知道是否有更好的方法來做到這一點,所以我有一個乾淨的實現,看起來不錯,並符合我的要求。

在此先感謝。

分類代碼:

- (void)initImageDictionary 
    { 
    if(navigationBarImages==NULL){ 
     navigationBarImages=[[NSMutableDictionary alloc] init]; 
    } 
} 

- (void)drawRect:(CGRect)rect 
{ 
    UIImage *imageName = [navigationBarImages objectForKey:[NSValue valueWithNonretainedObject: self]]; 

    UIImage *image = imageName; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 

} 


- (void)setMyImage:(UIImage*)image 
{ 
[navigationBarImages setObject:image forKey:[NSValue valueWithNonretainedObject: self]]; 
[self setNeedsDisplay]; 
} 

然後我打電話:

[self.navigationBar performSelectorInBackground:@selector(setMyImage:) withObject:[UIImage imageNamed:imageTopbar]]; 
+0

你可以發佈你已經實現的代碼來獲得更好的主意嗎? –

+0

添加了一些代碼,希望它有幫助。 – Icky

+0

試試這個鏈接http://stackoverflow.com/questions/6383873/approach-to-make-a-custom-tabbar –

回答

0

您應該只在主線程中使用的UIKit。

0

在你的ViewController,試試這個地方@ 「BGimage.png」 是你的映像文件:

//把圖片作爲BG模式(瓦)的視圖 //self.view.backgroundColor = [ UIColor colorWithPatternImage:[UIImage imageNamed:@「BGimage.png」]];