iOS弹出半透明选择窗时屏蔽导航栏

写公司项目时遇到这个问题,弹出选择项目的半透明窗口时,半透明的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];
      }
    

效果如图:

iOS弹出半透明选择窗时屏蔽导航栏_第1张图片
科目选择_置于window
  • 记录个小方法.

你可能感兴趣的:(iOS弹出半透明选择窗时屏蔽导航栏)