UIWindow

Posted ch520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UIWindow相关的知识,希望对你有一定的参考价值。

1、Window 的创建

    // 声明窗口视图
    @property (strong, nonatomic) UIWindow *window; 

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        // 实例化窗口视图,window 的大小和当前手机屏幕一样大
        self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen].bounds];   
        // 设置 window 的背景颜色
        self.window.backgroundColor = [UIColor whiteColor];  
        // 将窗口显示到屏幕上
        [self.window makeKeyAndVisible];

        return YES;
    }

2、UIScreen 的使用

  • 2.1 UIScreen 的属性

        // 带有状态栏的 Rect 
    CGRect bound = [UIScreen mainScreen].bounds;

    // 不带有状态栏的 Rect 
    CGRect frame = [UIScreen mainScreen].applicationFrame;

    // 设备的自然分辨率
    float scale = [UIScreen mainScreen].scale;
  • 2.2 scale 属性的进一步的说明:

    • 以前的 iPhone 设备屏幕分辨率都是 320x480,后来 apple 在 iPhone 4 中采用了名为 Retina 的显示技术,iPhone 4 采用了 960x640 像素分辨率的显示屏幕。由于屏幕大小没有变,还是 3.5 英寸,分辨率的提升将 iPhone 4 的显示分辨率提升至 iPhone 3GS 的四倍,每英寸的面积里有 326 个像素。
    • 简单的理解 scale 就是一个点有几个像素。scale 属性的值目前有 3 个:
      • scale = 1.0; iPhone 4 之前的设备
      • scale = 2.0; iPhone 4 ~ iPhone 7 (除 plus 外) 的设备
      • scale = 3.0; iPhone 6 plus 和 iPhone 7 plus 的设备

3、获取屏幕宽度与高度

    // 当前屏幕的宽度
    CGFloat width =  [UIScreen mainScreen].bounds.size.width;

    // 当前屏幕的高度      
    CGFloat height = [UIScreen mainScreen].bounds.size.height; 

以上是关于UIWindow的主要内容,如果未能解决你的问题,请参考以下文章

状态栏与 UIWindow 分开旋转

使用 UIWindow() 进行单元测试时出现 NSInternalConsistencyException

在变暗的 UIWindow 上显示 UIView

从 ViewController 调用时如何设置应用的 UIWindow 颜色

向我添加到 UIWindow 的视图添加约束时出错?

IOS 13 UIWindow 实例在应用程序启动期间为零