写公司项目时遇到这个问题,弹出选择项目的半透明窗口时,半透明的UIView并不能覆盖导航栏,返回按钮也不能屏蔽.本文来实现覆盖导航栏的效果.
-
chooseView是UIView
if(chooseView){ [chooseView removeFromSuperview]; chooseView = nil; } //[DMDevceManager screenWidth]为取到的屏幕宽度,另一个同理 chooseView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, [DMDevceManager screenWidth], [DMDevceManager screenHeight])]; chooseView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.75]; //以下方法来自cocoaChina的135790的回帖 UIWindow * currentWindow = [UIApplication sharedApplication].keyWindow; [currentWindow addSubview:chooseView];
解决办法就是将该View直接置于当前window.
-
实际使用过程中发现如果在该界面登录帐号被顶掉(被强制返回登录页面),该页面因为在window上所以不会消失.只需要加一句以下代码即可
- (void)viewWillDisappear:(BOOL)animated { [chooseView removeFromSuperview]; }
效果如图:
- 记录个小方法.