在上篇我们简单讲了UIView的坐标与几何结构,这篇我们来实战UIView一下。UIView在App中有着绝对重要的地位,因为可视化控件几乎都是UIView的子类。在App负责渲染区域的内容,并且响应该区域内发生的触摸事件。

UIView的功能 :

  • 管理矩形区域里的内容
  • 处理矩形区域中的事件
  • 子视图的管理
  • 实现动画

App中基本的UIView及子类:

UIWindow

  UIWindow对象是所有UIView的根,管理和协调的应用程序的显示UIWindow类是UIView的子类,可以看作是特殊的UIView。一般应用程序只有一个UIWindow对象,即使有多个UIWindow对象,也只有一个UIWindow可以接受到用户的触屏事件。 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
//设置window背景色
self.window.backgroundColor = [UIColor redColor];
//让window显示
[self.window makeKeyAndVisible];
return YES;
}

UIScreen

  UIScreen可以获取设备屏幕的相关的数据。

 //返回的是带有状态栏的Rect
CGRect screenBounds = [ [UIScreen mainScreen] bounds];
//不包含状态栏的Rect
CGRect viewBounds = [ [UIScreen mainScreen] applicationFrame];

UIView

  UIView对象定义了一个屏幕上的一个矩形区域,同时处理该区域的绘制和触屏事件。可以在这个区域内绘制图形和文字,还可以接收用户的操作。一个UIView的实例可以包含和管理若干个子UIView。

UIView* newView =[[ UIView alloc] initWithFrame:CGRectMake(0.0,0.0,200.0,200.0)];
[self.view addSubview:newView];

综合这几个view 实战一下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
//设置window背景色
self.window.backgroundColor = [UIColor redColor];
//让window显示
[self.window makeKeyAndVisible]; CGRect bound = [[UIScreen mainScreen] bounds];
UIView *view_1 = [[UIView alloc] initWithFrame:bound];
view_1.backgroundColor = [UIColor blueColor];
[self.window addSubview:view_1]; CGRect frame = [ [UIScreen mainScreen] applicationFrame];
UIView *view_2 = [[UIView alloc] initWithFrame:frame];
view_2.backgroundColor = [UIColor redColor];
[self.window addSubview:view_2]; CGRect rect_3 = CGRectMake(0, 0, 160, 100);
UIView *view_3 = [[UIView alloc]initWithFrame:rect_3];
view_3.backgroundColor = [UIColor greenColor];
[view_1 addSubview:view_3]; CGRect rect_4 = CGRectMake(160, 0, 160, 100);
UIView *view_4 = [[UIView alloc]initWithFrame:rect_4];
view_4.backgroundColor = [UIColor blueColor];
[view_2 addSubview:view_4]; [view_1 release];
[view_2 release];
[view_3 release];
[view_4 release];
return YES;
}

  

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4753754.html

[Objective-C] 017_UI篇_UIView(中)的更多相关文章

  1. iOS开发拓展篇—xib中关于拖拽手势的潜在错误

    iOS开发拓展篇—xib中关于拖拽手势的潜在错误 一.错误说明 自定义一个用来封装工具条的类 搭建xib,并添加一个拖拽的手势. 主控制器的代码:加载工具条 封装工具条以及手势拖拽的监听事件 此时运行 ...

  2.   PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia)。据说yEd也很不错。

    SBCL编译过程 - O.Nixie的专栏 - 博客频道 - CSDN.NET PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia).据说yEd也很不 ...

  3. Mysql篇--Linux中安装Mysql

    一.前述 由于Windows安装Mysql非常麻烦,所以分享一篇Linux中对MySQL的搭建,废话不多说,来,come on. 二.步骤 2.1 yum安装 yum install mysql-se ...

  4. 第三篇 Flask 中的 request

    第三篇 Flask 中的 request   每个框架中都有处理请求的机制(request),但是每个框架的处理方式和机制是不同的 为了了解Flask的request中都有什么东西,首先我们要写一个前 ...

  5. 第二篇 Flask 中的 Render Redirect HttpResponse

    第二篇 Flask 中的 Render Redirect HttpResponse   1.Flask中的HTTPResponse 在Flask 中的HttpResponse 在我们看来其实就是直接返 ...

  6. 第九篇 Flask 中的蓝图(BluePrint)

    第九篇 Flask 中的蓝图(BluePrint)   蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? ...

  7. Spring整合Struts2框架的第一种方式(Action由Struts2框架来创建)。在我的上一篇博文中介绍的通过web工厂的方式获取servcie的方法因为太麻烦,所以开发的时候不会使用。

    1. spring整合struts的基本操作见我的上一篇博文:https://www.cnblogs.com/wyhluckdog/p/10140588.html,这里面将spring与struts2 ...

  8. IOS开发数据存储篇—IOS中的几种数据存储方式

    IOS开发数据存储篇—IOS中的几种数据存储方式 发表于2016/4/5 21:02:09  421人阅读 分类: 数据存储 在项目开发当中,我们经常会对一些数据进行本地缓存处理.离线缓存的数据一般都 ...

  9. 红茶一杯话Binder (传输机制篇_中)

    红茶一杯话Binder (传输机制篇_中) 侯 亮 1 谈谈底层IPC机制吧 在上一篇文章的最后,我们说到BpBinder将数据发到了Binder驱动.然而在驱动层,这部分数据又是如何传递到BBind ...

随机推荐

  1. django源码分析——处理请求到wsgi及视图view

    本文环境python3.5.2,django1.10.x系列 根据前上一篇runserver的博文,已经分析了本地调试服务器的大致流程,现在我们来分析一下当runserver运行起来后,django框 ...

  2. 【UEFI】---史上最全的X86平台启动流程分析(软硬结合)

    最近研究了下X86处理器的启动流程分析,相比于常见的ARM来说,X86平台启动流程真的复杂了很多,本次基于项目实际的两个问题入手,研究了包括以下几个部分的内容: 1. 从硬件角度看启动流程 2. 从软 ...

  3. Qt之xml文件解析

    XML文件简介 XML - EXtensible Markup Language,可拓展标记语言 Qt中加载XML模块 .pro 文件中添加 QT += xml Qt的XML访问方式 引用:https ...

  4. vue项目中使用bpmn-自定义platter

    前情提要 经过前四篇的学习,我们能够实现bpmn基本绘图.预览.为节点加事件加颜色等效果,这一篇我们来说,如何自定义左侧工具栏(platter),首先看一下自定义前后效果图对比: 我们本次要实现的目标 ...

  5. Java并发编程实战 04死锁了怎么办?

    Java并发编程文章系列 Java并发编程实战 01并发编程的Bug源头 Java并发编程实战 02Java如何解决可见性和有序性问题 Java并发编程实战 03互斥锁 解决原子性问题 前提 在第三篇 ...

  6. Mysql常用sql语句(22)- insert 插入数据

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 终于讲完基础的查询语句了...这篇讲的就是插入数 ...

  7. 2018-06-30 js事件

    一.js代码加载的时机 1.DOM加载完毕 -> 将js代码放到body体之下即可: 2.网页资源加载完毕-> $(window).onload(function(){  }); 3.jQ ...

  8. percona 5.6的安装

    yum 安装, 1 如果已经安装过mysql 的东西,先卸载了.yum remove mysql* 包括 /etc/my.cnf 这个东西卸载的时候不会删除. mv /etc/my.cnf /etc/ ...

  9. clickhouse基本操作一

    常用SQL 创建表 1 2 3 4 5 6 7 CREATE TABLE b6logs( eventDate Date, impid UInt64, uid String, idfa String, ...

  10. 使用gitHub和git进行团队合作开发

    1.创建仓库(项目)-----组织者(Leader)和团队成员 1)Leader在gitHub上创建一个新组织(New organization),然后邀请成员加入 2)Leader在该组织下创建一个 ...