UIWindow是UIView的子类,一个程序只能有一个window主窗口.

在XCode7之后我们创建UIWindow的对象,代码如下:

//创建一个窗口,使其铺满屏幕(设置大小)          初始化的时候不要用self.window,这样相当于先调用setter方法再申请空间,可能会出现传值错误

_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];  //UIScreen mainScreen代表满屏

//为窗口设置属性(创建一个视图控制器,通过RGB的值进行调色)

[self.window setBackgroundColor:[UIColor colorWithRed:166/255.0 green:100/255.0 blue:30/255.0 alpha:1]];

//设置window的根视图控制器

UIViewController *root = [[UIViewController alloc]init];

[self.window setRootViewController:root];

//绘制window(这一步一定要放到最后一步来,所有程序代码都加载好以后,再绘制Window)

[self.window makeKeyAndVisible];

这样我们就设置好了程序的window界面,相当于设置好了一个画框.

UIView表示屏幕上的一块矩形区域,负责渲染区域的内容,并相应该区域内发生的事件.IOS中所有的可视化控件都是UIView的子类.

struct CGPoint {

CGFloat x;

CGFloat y;

};typedef struct CGPoint CGPoint;//点结构体

struct CGPoint {

CGFloat x;

CGFloat y;

};typedef struct CGPoint CGPoint;//确定大小的结构体

struct CGPoint {

CGFloat x;

CGFloat y;

};

typedef struct CGPoint CGPoint;//一个矩形框的结构体,IOS中使用CGRect类型确定矩形位置以及大小

UIView可以看作是画布~画框做好之后,要放置画布(一共三步):

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];      //申请内存空间,初始化

view.backgroundColor = [UIColor redColor];        //设置控件属性(在这里对画布UIView进行设置)

[self.window addSubview:view];    //添加子视图

在设置控件属性这一步可以对视图进行更多的设置,比如:

  view.center = self.window.center;    //将UIView放到window的中心

  view.tag = 1;    //给视图做一个标记,在window上标记为1

想要使用的时候用:

- (nullable UIView *) viewWithTag:(NSInteger)tag;

比如:

UIView *newView = [self.window viewWithTag:1];     //父视图中tag为1的子视图

frame是UIView的重要属性,是我们用于视图布局的关键。 它决定了视图的大小和位置。frame是CGRect类型,是基于它父视图的坐标系而言的。

bounds 是CGRect,是告诉子视图本视图的原点位置.(通俗的说就是,子视图的frame的origin与父视图的bounds的origin的差,

就是子视图相对于父视图左上角的位置,如果结果为负,则子视图在父视图外)

center  是CGPoint  指的就是整个视图的中心点,改变视图的center也会改变frame.

UIView常用的属性

对视图控制常用的方法:

对视图层次的管理:

UIView 和 UIWindow 的学习内容的更多相关文章

  1. iOS--UIView和UIWindow用法

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

  2. iOS开发——UI篇OC篇&UIView/UIWindow/UIScreen/CALayer

    UIView/UIWindow/UIScreen/CALayer 1.UIScreen可以获取设备屏幕的大小. 1 2 3 4 5 6 7 // 整个屏幕的大小 {{0, 0}, {320, 480} ...

  3. web前端开发学习内容

    应该 具备的 知识技能 :懂web标准,熟练手写 xhtml css3 并符合 符合w3c标准                       代码能 兼容主流浏览器.ie6.7.8.9 ff 等.    ...

  4. STM32学习内容和计划

    一.STM32学习内容(流程) 1.学习STM32开发流程 ①MDK使用.建立工程.调试等 ②库开发方法 2.学习STM32常用外设开发 ①GPIO ②中断 ③定时器 ④串口 ⑤CAN 3.学习STM ...

  5. u-boot代码学习内容

    前言  u-boot代码庞大,不可能全部细读,只能有选择的读部分代码.在读代码之前,根据韦东山教材,关于代码学习内容和深度做以下预先划定. 一.Makefile.mkconfig.config.mk等 ...

  6. 2.Freshman阶段学习内容的确定

    我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...

  7. 20155209 2016-2017-2 《Java程序设计》第九周学习总结 ## 教材学习内容总结

    教材学习内容总结 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系数据库中的数据. 执行流程: •连接数据源,如:数据库. •为数据库传递查询和更新指令. •处理数据库响应并返回的结 ...

  8. JAVA第十周《网络编程》学习内容总结

    JAVA第十周<网络编程>学习内容总结 学习内容总结 1.初听到网络编程四个字可能会觉得很困难,实际上网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据,把数据发送到指定的位置, ...

  9. # 20145118 《Java程序设计》第4周学习总结 ## 教材学习内容总结

    20145118 <Java程序设计>第4周学习总结 教材学习内容总结 本周内容为教材第六.七两张内容. 重点概念: 1.面向对象中,子类继承父类,避免重复的行为定义,是一种简化操作. 2 ...

随机推荐

  1. FLASH图片上传功能—从百度编辑器UEditor里面提取出来

    为了记录工作中碰到的各种问题,以及学习资料整理,今天开始,将以往的文章进行了一个整理,以后也开始认真的记录学习过程中的各种问题 在HTML里面的文件上传功能一直是个问题,为了实现上传文件大小限制,怎样 ...

  2. 微软TTS,Neospeech TTS 简单使用

    今天搞了下微软的TTS,逛了好多网页.博客,拼拼凑凑搞了点东西吧. 首先添加类库调用,系统自带的system.speech using System.Speech.Synthesis; 然后就能调用方 ...

  3. Byte、KB、MB、GB、TB、PB、EB是啥以及它们之间的进率

    它们是存储单位 因为计算机存储单位一般用B,KB.MB.GB.TB.PB.EB.ZB.YB.BB来表示,它们之间的关系是: 位 bit (比特)(Binary Digits):存放一位二进制数,即 0 ...

  4. iOS 之改变状态栏颜色

    1.在工程中找到 info.plist  文件,点击“+”号,选择 View controller-based status bar appearance 并设为 NO 2.在 AppDelegate ...

  5. IOS Block 反向传值

    1.在需要像上一个界面传值的.h 文件实现代理方法 @property (nonatomic, copy) void(^isOpenHandler)(BOOL) ; 2.在执行操作的时候需要江操作的结 ...

  6. for()循环

    今天发现自己一直以来都搞错了for()循环的执行顺序.这么简单的问题一直都错了,我也是醉了. ;i>&&a[i]>a[i-];--i) { } //即 for(init_s ...

  7. 【转载】 Searching过程粗略梳理

    转载自:http://www.cnblogs.com/huangfox/archive/2012/02/09/2344686.html solr-searching过程分析(一) --searchin ...

  8. css3属性:column分栏

    css3选择器中提出了分栏的属性,其浏览器支持情况为:Internet Explorer 10 和 Opera 支持 column 属性,Firefox 支持替代的 -moz-column 属性,Sa ...

  9. LInux系统的C语言开发工具笔记

    常用的C语言开发工具有很多,每个开发工具所支持的库函数和对标准的实现都有差异.对于初学者,选择一款使用广泛.上手容易的开发工具才是王道.在Windows 上很多从事C和C++开发的人员都选择VS作为开 ...

  10. 利用raspberry pi搭建typecho笔记(三) typecho nginx sqlite FAQ

    前言 这是一个汇总文,用来总结我在整个配置过程中遇到的各种问题.因为我在解决这些问题的过程中发现,typecho被部署在这种需要完全自己配置的平台上的情况是比较少的,相关的资料也比较少,所以我的解决过 ...