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
时间: 2024-08-04 14:46:32

iOS - UIWindow的相关文章

详解iOS设计中的UIWindow使用_IOS

每一个IOS程序都有一个UIWindow,在我们通过模板简历工程的时候,xcode会自动帮我们生成一个window,然后让它变成keyWindow并显示出来.这一切都来的那么自然,以至于我们大部分时候都忽略了自己也是可以创建UIWindow对象.   通常在我们需要自定义UIAlertView的时候(IOS 5.0以前AlertView的背景样式等都不能换)我们可以使用UIWindow来实现(设置windowLevel为Alert级别),网上有很多例子,这里就不详细说了.一.UIWindowLe

iOS开发UI篇—UIWindow简单介绍

一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow.也就说,没有UIWindow,就看不见任何UI界面 补充:UIWindow是创建的第一个视图控件(创建的第一个对象是UIapplication)如下图:

iOS开发之UIWindow

1.概述 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow. iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了. 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow.也就说,没有UIWindow,就看不见任何UI界面. 2.添加UIView到UIWindow中两种常见方式 方式一: - (void)addSubview

iOS应用开发中视图控件UIWindow的基本使用教程_IOS

一.简单介绍 iPhone应用程序通常只有一个窗口,表示为一个UIWindow类的实例.应用程序在启动时(或者从nib文件进行装载)创建这个窗口,并往窗口中加入一或多个视图并显示出来.之后我们很少需要再次引用它.UIWindow对象是所有UIView的根,管理和协调的应用程序的显示.一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件. 在IOS中,UIWindow对象并没有像windows应用程序中常见的关闭框或标题栏这样

深入了解iOS开发中UIWindow的相关使用_IOS

UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow. iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了. 一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow.也就说,没有UIWindow,就看不见任何UI界面. 如何获取UIWindow (1)[UIApplication sharedApplication].windo

IOS开发之视图和视图控制器

        视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西.在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多.在UIKit框架中都有一个UIWindow来容纳我们的View.应用程序中几乎全部的可视控件都是UIView以及UIView的子类的实例,并且UIWindow也是UIView的子类.UIWindow可以不借助于父类视图显示在屏幕上,其余的视图都需要添加到父视图中才能显示.窗口是用来显示视图的,下面我们将会结

iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会补充通知中心的内容避免初学者对两种概念的混淆. 本地通知 推送通

在Linux上编译iOS程序

phpwind appcreator是向站长提供的自助app生成平台,目前只支持Android,为了支持iOS,搜了一些相关资料,发现可以在Linux上来编译iOS程序,但最后的签名什么的还没细究. 主要用到了一些cjacker移植的工具链(应该是基于苹果公司开源的一些代码),以及他开发的iphonesdk-utils(主要是一些辅助工具,比如ios-clang,会探测iPhone SDK,并自动加上一些参数来调用clang,避免自己手写很多参数,比如 --target 等). 介绍下具体步骤:

iOS 6中控制屏幕旋转支持方向的方法

在iOS5.1 和 之前的版本中, 我们通常利用 shouldAutorotateToInterfaceOrientation: 来单独控制某个UIViewController的旋屏方向支持,比如: - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPo