How to add UIView over navigation bar?

99封情书 提交于 2019-12-02 20:51:53

You can add a subview to the base view of the Application

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

To make sure it is only shown when your view controller is visible you could add and remove it in the viewDidAppear and viewDidDisappear delegate methods. Here is an example that would show a blue box overlapping them.

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

Use the method :

- (void)bringSubviewToFront:(UIView *)view

So in your case that will be :

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

Also don't forget that with this way, your ribbon won't be showed completely except if you do this :

navigationBar.clipsToBounds = NO;

I hide NavigationBar and added UIView instead. It looks the same as Navbar. then add more one UIView with red bookmark. Beside it give possibility to animate bookmark on touch separately.

If I added bookmark this way: [navigationBar addSubview:myRibbon]; it was hidden on half of size

Here's a Swift 3 answer

UIApplication.shared.keyWindow?.addSubview(menuView)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!