我需要像UINavigationBar
一样叠加UIView
有没有办法做到这一点,除了使用自定义UIView按钮返回导航栏?
您可以将子视图添加到应用程序的基本视图中
[[[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。除此之外,还可以单独触摸书签动画。
如果我这样添加书签:[navigationBar addSubview:myRibbon];它隐藏在一半的大小
这是Swift 3的答案
UIApplication.shared.keyWindow?.addSubview(menuView)