2013-01-09 175 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)