昨天浏览QQ空间里自己很久以前发表的说说,感到幼稚的同时又觉得很欣慰。所以突然想把自己做iOS开发以来遇到的问题、自己的心得记录下来。
今天分享一下自己的iOS开发中遇到window的问题
1、首先window个人觉得我们大可以把window看成是View,因为UIWindow继承自UIView;
2、一个程序可以有多个window,我们可以任意创建添加,至于window如何创建如何拿到最上层的window就不多说了。
举个关于京东筛选的例子:有图有例子
UIWindow *window = [[UIWindowalloc] initWithFrame:CGRectMake(30,0, Screen_weight-30,Screen_height)];
window.backgroundColor = [[UIColorclearColor] colorWithAlphaComponent:0.7];
window.windowLevel =UIWindowLevelNormal;
//[window makeKeyWindow];//这段代码是关键我当初的问题就是加了这段代码就会出现如图所示效果
keywindow是唯一一个可以接受响应的Window,在一个应用程序中只有唯一一个keyWindow
官方解释:
The key window is the one that is designated to receive keyboard and other non-touch related events. Only one window at a time may be the key window.
所以如果此处你让自己创建的window成为可以window那么与app delegate中的window冲突
window.hidden =NO;
、、这段回调函数是为了点击取消按钮能够使window动画移除
__weak typeof(self) weak =self;
[up setCancleBarItemHandle:^{
[UIViewanimateWithDuration:1.5animations:^{
weak.window.frame =CGRectMake(Screen_weight,0, 0, Screen_height);
}];
//获取全局队列
dispatch_queue_t queue = dispatch_get_main_queue();
//创建主线程延迟
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 *NSEC_PER_SEC)),queue, ^{
[weak.upViewremoveFromSuperview];//蒙版视图
weak.upView =nil;
weak.window =nil;
});
}];
}