How to add UIView on the top of all views? How to add UIView on the top of all views? ios ios

How to add UIView on the top of all views?


The recommended solutions which handle device orientation properly are

  • podAGWindowView It will automatically deal with any rotation and framechanges so you won't have to worry about that.
  • read and follow the official post https://developer.apple.com/library/content/qa/qa1688/_index.html
  • Add your view to the first subview, instead of adding it to the window

    UIWindow* window = [UIApplication sharedApplication].keyWindow;if (!window)     window = [[UIApplication sharedApplication].windows objectAtIndex:0];[[[window subviews] objectAtIndex:0] addSubview:myView];

You can also add it to the window. It will not handle device orientation, though.

let window = UIApplication.sharedApplication().keyWindow!let view = UIView(frame: CGRect(x: window.frame.origin.x, y: window.frame.origin.y, width: window.frame.width, height: window.frame.height))window.addSubview(v);view.backgroundColor = UIColor.blackColor()


There is also one other method

Add the following method in the view will appear to add every time push/pop view controller

-(void)viewWillAppear:(BOOL)animated{     [super viewWillAppear:animated];     [[[UIApplication sharedApplication] keyWindow] addSubview:<yourViewObject>];}

And for remove this view in next class add the following lines of code

-(void)viewWillDisappear:(BOOL)animated{    [super viewWillDisappear:animated];    [<yourViewObject> removeFromSuperview]; }


@MaciekWrocław answere swift version

Swift2

 var appDelegate = (UIApplication.sharedApplication().delegate! as! AppDelegate) var backgrView = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.size.width, UIScreen.mainScreen().bounds.size.height)) backgrView.backgroundColor = UIColor.redColor() backgrView.alpha = 0.6 window?.addSubview(backgrView)

swift3

     var appDelegate: AppDelegate? = (UIApplication.shared.delegate as? AppDelegate)     var backgrView = UIView(frame: CGRect(x: CGFloat(0), y: CGFloat(0), width: CGFloat(UIScreen.main.bounds.size.width), height: CGFloat(UIScreen.main.bounds.size.height)))     backgrView.backgroundColor = UIColor.red     backgrView.alpha = 0.6     window?.addSubview(backgrView)

and i am doing for my application about net connection in the AppDelegate:

func checkReachabilityUpdateUI() -> Int {    let remoteHostStatus = self.reachability?.currentReachabilityStatus()    if remoteHostStatus?.rawValue == 0 {        let backgrView = UIView(frame: CGRectMake(0, 60, UIScreen.mainScreen().bounds.size.width, 44))        let statusMessage = UILabel(frame: CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.size.width, height: 44))        statusMessage.text = "No internet Connection"        statusMessage.textAlignment = .Center        statusMessage.textColor =  UIColor.whiteColor()        backgrView.backgroundColor = UIColor.redColor()        backgrView.addSubview(statusMessage)        backgrView.tag = 100        window?.addSubview(backgrView)        return (remoteHostStatus?.rawValue)!    }    else {        if let viewWithTag = self.window!.viewWithTag(100) {            print("Tag 100")            viewWithTag.removeFromSuperview()        }        else {            print("tag not found")        }       return (remoteHostStatus?.rawValue)!    }}