如何在导航栏上添加UIView?
我需要像UIView
这样覆盖UINavigationBar
http://screencast.com/t/ZKXNFcAzVu>“>
有没有办法做到这一点,除了使用自定义的UIView与button后面的导航栏?
您可以将子视图添加到应用程序的基本视图
[[[UIApplication sharedApplication] keyWindow] addSubview:vMyCustomUIView];
为了确保只有当你的视图控制器可见时才显示,你可以在viewDidAppear
和viewDidDisappear
委托方法中添加和删除它。 这是一个例子,将显示一个蓝色框重叠他们。
- (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)