如何在导航栏上添加UIView?

我需要像UIView这样覆盖UINavigationBar

http://screencast.com/t/ZKXNFcAzVu>“>

有没有办法做到这一点,除了使用自定义的UIView与button后面的导航栏?

您可以将子视图添加到应用程序的基本视图

 [[[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]; } 

使用方法:

 - (void)bringSubviewToFront:(UIView *)view 

所以在你的情况下,将是:

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

另外不要忘记,用这种方式,除非你这样做,否则你的色带不会被完全展现出来:

 navigationBar.clipsToBounds = NO; 

我隐藏NavigationBar并添加UIView。 它看起来跟Navbar一样。 然后用红色书签添加更多的UIView。 除此之外,还可以单独为触摸书签添加animation。

如果我这样添加书签:[navigationBar addSubview:myRibbon]; 它隐藏在一半的大小

这是一个Swift 3的答案

 UIApplication.shared.keyWindow?.addSubview(menuView)