iOS - UIWindow

简介: 前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UIWindow : UIView @available(iOS 2.0, *) public class UIWindow : UIView1、Window 的创建Objecti...

前言

    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 设备的屏幕尺寸:

    UIWindow1

  • 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开发
IOS获取 UIWindow
IOS获取 UIWindow
437 0
|
iOS开发
【iOS 开发】防止 UIWindow 延迟释放占用状态栏
在展示 app 启动广告等情况下,我们可能需要在界面上叠加一个 UIWindow,但是实测情况下发现,由于 UIWindow 会被系统引用导致延迟释放,在 customWindow 实例被使用完之后,单纯 customWindow.
876 0
|
iOS开发 Android开发 Windows
|
1月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
141 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
3月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
3天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
22 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
2月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
143 66

热门文章

最新文章