2013-01-09 181 views
14

我需要覆蓋UINavigationBarUIView喜歡這裏如何在導航欄上添加UIView?

http://screencast.com/t/ZKXNFcAzVu & GT;「>

有沒有辦法做到這一點,除了使用自定義的UIView與按鈕追溯到導航吧?

+1

如果你想要做這種塞入比更好,您應該使用的UIView創建自定義導航。比你有完全控制它,你可以給你看到你想要給的東西.... – CRDave

回答

23

您可以將子視圖添加到應用程序的基本視圖

[[[UIApplication sharedApplication] keyWindow] addSubview:vMyCustomUIView]; 

,以確保它只是顯示在您的視圖控制器是可見您可以在viewDidAppearviewDidDisappear委託方法中添加並刪除它。這裏是一個例子,它會顯示一個藍色框與他們重疊。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib.  
    vTestView = [[UIView alloc] initWithFrame:CGRectMake(10.0f, 
                 10.0f, 
                 100.0f, 
                 100.0f)]; 
    vTestView.backgroundColor = [UIColor blueColor]; 
} 


-(void)viewDidAppear:(BOOL)animated 
{ 
    [[[UIApplication sharedApplication] keyWindow] addSubview:vMyCustomUIView]; 
} 
-(void)viewDidDisappear:(BOOL)animated 
{ 
    [vMyCustomUIView removeFromSuperview]; 
} 
+0

在迅速2 ... 讓覆蓋:UIView = UIView(框架:CGRectMake(0,0,UIScreen.mainScreen() UIAcreen.mainScreen()。bounds.size.height)) overlay.backgroundColor = UIColorFromHex(0x000000,alpha:0.7) UIApplication.sharedApplication()。keyWindow!.addSubview(overlay) –

12

使用方法:

- (void)bringSubviewToFront:(UIView *)view 
你的情況

所以這將是:

[navigationBar addSubview:myRibbon]; 
[navigationBar bringSubviewToFront:myRibbon]; 

也不要忘記,這樣,你的絲帶將不會被顯示完全除外如果你這樣做:

navigationBar.clipsToBounds = NO; 
1

我隱藏NavigationBar並添加UIView。它看起來跟Navbar一樣。 然後用紅色書籤添加更多的UIView。除此之外,還可以單獨爲觸摸書籤添加動畫。

如果我這樣添加書籤: [navigationBar addSubview:myRibbon]; 它被隱藏在大小

0

的一半以下是雨燕3回答

UIApplication.shared.keyWindow?.addSubview(menuView)