//************************************************** UIWindow
获取最上面的window
UIWindow *window =[ [UIApplication sharedApplication].windows lastObject];
[window addSubview:dropdownMenu];
NSLog(@“%@”,[UIApplication sharedApplication].windows)
self.window.rootViewController = [[RootViewController alloc]init];
self.view.window = [UIApplication sharedApplication].keyWindow
NSLog(@“%@”,[application.windows lastObjec]);
【 window makeKeyWindows 】 仅仅是成为主窗口 但是不会显示
【 window makeKeyAndVisible 】 又主窗口 又会显示 【做两件事情,让窗口变成了我,hidden = NO】
知识点: 越后面创建越叠在上面
如果是成员变量 _window
如果是全局变量 window_
窗口优先级:window.windowLevel = UIWindowLevelAlert最高->, UIWindowLevelStatusBar-> UIWindowLevelNorma最低【默认】;
需求:弹出一个新的控制器 ,实现半透明的效果。
问题:当你用present 的时候,就算你view背景设置了透明色,弹出的界面依然是黑色的。黑色的是window.
此时,你想要看到后面的控制器,但是它已经移除到外面去了。所以看不到后面的内容
解决方法: 1. 把 view 加上去 ,不再是弹出控制器
思路1:点击按钮的时候,创建一个半透明的控件,直接添加到窗口上去。
【此代码不全面 ,看视频】
MIOPublishViewController *publish = [[MIOPublishViewController alloc]init];
UIViewController *root =[UIApplication sharedApplication].keyWindow.rootViewController;
[root.view addSubview: publish.view];
[root addChildViewController:publish]; 但这样写如果在tabbar 可能会出现问题的
思路2: 自定义窗口
UIWindow *window;
button click{
window =[ [UIView alloc]init];
window.frame = [UIScreen mainScreen].bounds;
window.backgroundColor =[ [UIColor yellowColor] colorWithAlphaComponent:0.5];
window.hidden = NO
}