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)! }}