前言

	NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView
@available(iOS 2.0, *) public class UIWindow : UIView

1、Window 的创建

  • Objective-C

    	// 声明窗口视图
    @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;
    }
  • Swift

    	// 声明窗口视图
    var window: UIWindow? func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // 实例化窗口视图,window 的大小和当前手机屏幕一样大
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds) // 设置 window 的背景颜色
    self.window?.backgroundColor = UIColor.whiteColor() // 将窗口显示到屏幕上
    self.window?.makeKeyAndVisible() return true
    }

2、UIScreen 的使用

  • UIScreen 的属性

    	// 带有状态栏的 Rect
    CGRect bound = [UIScreen mainScreen].bounds; // 不带有状态栏的 Rect
    CGRect frame = [UIScreen mainScreen].applicationFrame; // 设备的自然分辨率
    float scale = [UIScreen mainScreen].scale;
  • 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、获取屏幕宽度与高度

  • 不同型号的 iOS 设备的屏幕尺寸:

  • Objective-C

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

    	// 当前屏幕的宽度
    let width:CGFloat = UIScreen.mainScreen().bounds.size.width // 当前屏幕的高度
    let height:CGFloat = UIScreen.mainScreen().bounds.size.height

iOS - UIWindow的更多相关文章

  1. ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数

    今天遇到一个问题,第一次运行程序时,- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event函数无法调用,第二次就好了 ...

  2. iOS UIWindow 与 windowLevel 学习

    Pop几个关键点 KeyWindow :”The key window is the one that is designated to receive keyboard and other non- ...

  3. The App Life Cycle & The Main Function

    The App Life Cycle Apps are a sophisticated interplay between your custom code and the system framew ...

  4. [New Learn]被嫌弃的app的一生

    1.简介 为什么叫被嫌弃的app的一生?致敬电影<被嫌弃的松子的一生>. 自学IOS东一锄西一镐的总感觉没有一个总的概念,还是多看看官网吧,先看一下一个app的整个生命周期,本文主要是翻译 ...

  5. iOS--UIView和UIWindow用法

    基础 UI(user interface)是用户界面:iOS的应用是由各种各样的UI控件组成 UIWindow就是一个窗口,学的第一个基础类,就是一个容器,可以在容器上放不同的内容,每个app都需要借 ...

  6. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  7. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  8. iOS程序的启动过程-UIWindow

    UIApplicationMain main函数中执行了一个UIApplicationMain这个函数 int UIApplicationMain(int argc, char *argv[], NS ...

  9. iOS 关于UIWindow 的认识

    UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view ...

随机推荐

  1. array DEMO

    [xiluhua@vm-xiluhua][~]$ declare -a array #申明数组 [xiluhua@vm-xiluhua][~]$ array=("a" " ...

  2. Educational Codeforces Round 13 D:Iterated Linear Function(数论)

    http://codeforces.com/contest/678/problem/D D. Iterated Linear Function Consider a linear function f ...

  3. php socket通信(tcp/udp)

    注意 1.在socket_bind的时候ip地址不能真回环地址如127.0.0.1 2.server.php后台跑起来的时候 nohup php server.php > /var/tmp/a. ...

  4. 约瑟夫问题 java

    约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围.从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围 ...

  5. ACM题目————吝啬的国度

    描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设 ...

  6. Spring MVC 中请求返回之后的页面没法加载css、js等静态文件

    1.是否被拦截,这个在Web.xml配置中servlet拦截是“/”,如果是则 a.使用spring MVC 的静态资源文件 <!-- 静态文件访问,主要是针对DispatcherServlet ...

  7. Borg Maze 分类: POJ 2015-07-27 15:28 5人阅读 评论(0) 收藏

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9971   Accepted: 3347 Description The B ...

  8. 几篇不错的基础css博客转载

    CSS 巧用 :before和:after:http://web.jobbole.com/85083/ css清除元素间距:http://ouvens.github.io/frontend-css/2 ...

  9. NSIS学习记录の----win8.1和win10对于NSIS创建的卸载快捷方式无法在开始目录下显示

    NSIS提供了很好的软件卸载功能编写的方法,但是针对win8.1和win10操作系统,由于开始目录的权限限制,我们有时候并不能完美的完成所需要的功能----卸载程序的快捷方式不能显示.话不多说,下面提 ...

  10. linux ssh 使用深度解析(key登录详解)

    SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Gr ...