在PC中,应用程序多是使用视窗的形式显示内容,手机应用也不例外,手机应用中要在屏幕上显示内容首先要创建一个窗口承载内容,iOS应用中使用UIWindow、UIView来实现内容显示。

UIWindow:

UIWindow对象是所有UIView的根视图,管理和协调的应用程序的显示、分发事件给View。UIWindow类是UIView的子类,可以看作是特殊的UIView。一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件。UIWindow初始化在appDeleDgate里面的 didFinishLaunchingWithOptions方法。

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];[self.window makeKeyAndVisible];//显示出UIWindow

UIView:

UIView类继承自UIResponder,负责在屏幕上 定义一个矩形区域,视图用于展示界面及响应用户界面交互。每个视图对象都要负责渲染视图区域的内容,并响应该区域中发生的操作事件。

除了显示内容和处理事件之外,视图可以嵌套并管理子视图。子视图是指嵌入到另一视图对象内部的视图对象,而被嵌入的视图对象是父视图。视图添加到window中就会显示出来,iOS中是怎么实现视图显示的,看下面的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];// Override point for customization after application launch.self.window.backgroundColor = [UIColor whiteColor];CGRect rect=[UIScreen mainScreen].applicationFrame;NSLog(@"NSScreen application %@",NSStringFromCGRect(rect));CGRect rect2=[UIScreen mainScreen].bounds;NSLog(@"NSString mainScreen %@",NSStringFromCGRect(rect2));NSLog(@"iOS_didFinishLaunchingWithOptions");UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(60, 50, 200, 100)];view1.backgroundColor=[UIColor greenColor];[self.window addSubview:view1];[view1 release];UIView *view2=[[UIView alloc]initWithFrame:CGRectMake(60, 100, 200, 200) ];view2.alpha=0.5;view2.backgroundColor=[UIColor cyanColor];[self.window addSubview:view2];    UIView *view3=[[UIView alloc]initWithFrame:CGRectMake(100, 50, 60, 50)];view3.backgroundColor=[UIColor colorWithRed:25/255.0 green:60/255.0 blue:150/255.0 alpha:1.0];    [view2 addSubview:view3];[view3 release];[view2 release];[self.window makeKeyAndVisible];return YES;
}

上面添加了三个视图,view1、view2、view3,view3嵌套在view2中。

/**
* @author 张兴业

*  http://blog.csdn.net/xyz_lmn
*  iOS入门群:83702688
*  android开发进阶群:241395671
*  我的新浪微博:@张兴业TBOW
*/

转载于:https://www.cnblogs.com/xyzlmn/p/3168056.html

IOS学习笔记(五)——UI基础UIWindow、UIView相关推荐

  1. C#学习笔记五面向对象基础

    属性开头大写,字段开头小写 namespace 属性 { class Program { static void Main(string[] args) { person p = new person ...

  2. Java学习笔记(五):一张图总结完JVM8基础概念

    Java学习笔记(五):一张图总结完JVM8基础概念 引文 最近在学习JVM的相关内容,好不容易把基础概念全部都学了一遍,却发现知识网络是零零散散的.迫不得已,只好再来一次总的归纳总结.为了更好的理解 ...

  3. iOS学习笔记-自己动手写RESideMenu

    代码地址如下: http://www.demodashi.com/demo/11683.html 很多app都实现了类似RESideMenu的效果,RESideMenu是Github上面一个stars ...

  4. IOS学习笔记02---语言发展概述,计算机语言简介.

    IOS学习笔记02---语言发展概述,计算机语言简介. ------------------------------------------------------------------------ ...

  5. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  6. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  7. iOS学习笔记-自定义过渡动画

    代码地址如下: http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swi ...

  8. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  9. IOS学习笔记03---C语言概述

    IOS学习笔记03---C语言概述 0 3.C语言1-C语言概述         qq交流群:创梦技术交流群:251572072                        创梦网络赚钱群:2483 ...

  10. ROS学习笔记五:理解ROS topics

    ROS学习笔记五:理解ROS topics 本节主要介绍ROS topics并且使用rostopic和rqt_plot命令行工具. 例子展示 roscore 首先运行roscore系列服务,这是使用R ...

最新文章

  1. python 数组和列表的区别
  2. MySQL中(delete、truncate、drop) 的区别
  3. 在内存中动态生成缩略图
  4. 史上最新最全的Android培训机构大揭秘
  5. 云服务器哪家好?国内云服务器十大品牌排行榜
  6. CC2530看门狗定时器实现1秒定时
  7. Windows最值得安装的小众软件
  8. 基于python的证件照_不到20行实现Python代码即可制作精美证件照
  9. php面试题目(中等水平)
  10. Android实现仿QQ登录可编辑下拉菜单
  11. WinINet 与 WinHTTP简介
  12. DDR从channel/rank/chip/bank/row/col/cell,DDR/GDDR/HBM
  13. 中国苹果之都苹果快成熟了
  14. 图文对齐居中的几种方式
  15. 股市基础知识、主力战法【一.2】
  16. 计算机毕业设计Java醋坊定制销售平台(源码+系统+mysql数据库+lw文档)
  17. lua 中pairs 和 ipairs差别
  18. Android快速入门教程1
  19. 计算IP地址的有效范围
  20. [附源码]java毕业设计基于JavaWeb生鲜O2O订购平台

热门文章

  1. 关于http的一切(updating...)
  2. git commit -m 'comment' 遇到 'npm' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  3. js中短路运算符 ||
  4. 【操作系统】—线程概念和多线程模型
  5. RFID打印机有什么用
  6. 建立高端人脉的三条捷径
  7. 要想挣大钱,就要懂一个基本
  8. 没什么本钱怎么做生意?
  9. 现在生意不是能不能干的问题
  10. OpenStack 的诞生