iOS - UIWindow
前言
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的更多相关文章
- ios UIWindow 错误使用导致无法接收motionEnded(摇一摇)函数
今天遇到一个问题,第一次运行程序时,- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event函数无法调用,第二次就好了 ...
- iOS UIWindow 与 windowLevel 学习
Pop几个关键点 KeyWindow :”The key window is the one that is designated to receive keyboard and other non- ...
- The App Life Cycle & The Main Function
The App Life Cycle Apps are a sophisticated interplay between your custom code and the system framew ...
- [New Learn]被嫌弃的app的一生
1.简介 为什么叫被嫌弃的app的一生?致敬电影<被嫌弃的松子的一生>. 自学IOS东一锄西一镐的总感觉没有一个总的概念,还是多看看官网吧,先看一下一个app的整个生命周期,本文主要是翻译 ...
- iOS--UIView和UIWindow用法
基础 UI(user interface)是用户界面:iOS的应用是由各种各样的UI控件组成 UIWindow就是一个窗口,学的第一个基础类,就是一个容器,可以在容器上放不同的内容,每个app都需要借 ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- iOS开发UI篇—UIWindow简单介绍
iOS开发UI篇—UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...
- iOS程序的启动过程-UIWindow
UIApplicationMain main函数中执行了一个UIApplicationMain这个函数 int UIApplicationMain(int argc, char *argv[], NS ...
- iOS 关于UIWindow 的认识
UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view ...
随机推荐
- Java 中日期的几种常见操作 —— 取值、转换、加减、比较
Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提 ...
- 【转】使用JDK自带jvisualvm监控tomcat
转载地址: http://my.oschina.net/kone/blog/157239 jdk自带有个jvisualvm工具.该工具是用来监控java运行程序的cpu.内存.线程等的使用情况.并且使 ...
- YTU 2973: C语言习题5.25--文件操作2
2973: C语言习题5.25--文件操作2 时间限制: 1 Sec 内存限制: 128 MB 提交: 242 解决: 105 题目描述 文本文件score.dic 中存储了n名学生的信息(班级编 ...
- 转载-python学习笔记之文件I/O
Python 文件I/O 本章只讲述所有基本的的I/O函数,更多函数请参考Python标准文档. 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你 ...
- 从客户端中检测到有潜在危险的Request.Form 值
今天往MVC中加入了一个富文本编辑框,在提交信息的时候报了如下的错误:从客户端(Content="<EM ><STRONG ><U >这是测试这...&q ...
- php基础复习(一)smarty模板
一.基本配置第一步:下载smarty:官网www.smarty.net第二步:加载类文件和更改配置 1. //加载类文件 require_once '../libs/Smarty.class.php' ...
- 2016年12月10日 星期六 --出埃及记 Exodus 21:5
2016年12月10日 星期六 --出埃及记 Exodus 21:5 "But if the servant declares, `I love my master and my wife ...
- 解决maven项目将model version改成3.0版本问题
找到项目目录,找到.setting文件 找到org.eclipse.wst.common.project.facet.core.xml文件 修改如下标签 <installed facet=&qu ...
- assert函数
这个函数在<cassert>里面,通常用来调试程序. eg: int i=1: assert(i==1):/什么也不做 assert(i==2)://程序会异常退出
- 【leetcode❤python】66. Plus One
class Solution: # @param digits, a list of integer digits # @return a list of integer digi ...