如何在导航栏上添加UIView?

问题描述 投票:14回答:4

我需要像UINavigationBar一样叠加UIView

有没有办法做到这一点,除了使用自定义UIView按钮返回导航栏?

ios objective-c uiview uinavigationbar
4个回答
24
投票

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

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

13
投票

使用方法:

- (void)bringSubviewToFront:(UIView *)view

所以在你的情况下将是:

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

另外请不要忘记,通过这种方式,除非您执行此操作,否则您的功能区将不会完全显示:

navigationBar.clipsToBounds = NO;

1
投票

我隐藏了NavigationBar并添加了UIView。它看起来与Navbar相同。然后添加一个带红色书签的UIView。除此之外,还可以单独触摸书签动画。

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


0
投票

这是Swift 3的答案

UIApplication.shared.keyWindow?.addSubview(menuView)
© www.soinside.com 2019 - 2024. All rights reserved.