收集iOS--UIWindow的常用属性

作者: TenMios | 来源:发表于2016-12-24 14:27 被阅读121次
    //**************************************************  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
    
    }
    
    

    相关文章

      网友评论

        本文标题:收集iOS--UIWindow的常用属性

        本文链接:https://www.haomeiwen.com/subject/duglvttx.html