如何在导航栏上添加UIView?

And*_*nko 14 objective-c uinavigationbar uiview ios

我需要覆盖UINavigationBarUIView喜欢这里

http://screencast.com/t/ZKXNFcAzVu

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

Mar*_*igo 24

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

[[[UIApplication sharedApplication] keyWindow] addSubview:vMyCustomUIView];
Run Code Online (Sandbox Code Playgroud)

要确保仅在视图控制器可见时才显示它,您可以在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];
}
Run Code Online (Sandbox Code Playgroud)


del*_*oyk 13

使用方法:

- (void)bringSubviewToFront:(UIView *)view
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下将是:

[navigationBar addSubview:myRibbon];
[navigationBar bringSubviewToFront:myRibbon];
Run Code Online (Sandbox Code Playgroud)

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

navigationBar.clipsToBounds = NO;
Run Code Online (Sandbox Code Playgroud)