UIKit框架(2)框架简介

  • UIKit框架

什么是框架?

简单来说,就是其他攻城狮开发完成的代码,包括库文件、头文件等,这些文件中的API我们可以拿过来使用

UIKit框架是干什么的?

提供创建基于触摸用户界面的类

包括:屏幕上的绘制机制、捕捉事件、管理组织复杂的UI元素

UIKit中最重要的两个类?

1)UIView:所有可以看到的组件/控件/视图的父类

如:UIButton按钮、UILabel标签、UITextField输入框、UIImageView图片视图等

2)UIViewController:所有控制器的父类,负责管理一个页面

如:UIViewController基本页面、UITableViewController表格视图页面等

这两个父类都继承自UIResponder,称作响应者(以后介绍)

UIResponder继承自NSObject

  • 控制器的基本使用

在MVC设计模式中,控制器负责视图与模型数据的关联,完成页面的逻辑功能

UIViewController中包含一个非常重要的属性:页面中的视图

@property(nonatomic, retain) UIView *view

代码创建控制器:

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

控制器对象vc,即一个App中的页面,包含一个白色的空白view

设置App的初始页面(空模板下):

在AppDelegate文件中找到以下方法

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

在注释位置添加代码:

创建控制器对象,并设置其view的背景颜色

设置window对象的根控制器(初始页面)为新建的控制器

详细解释以下 空项目启动 的代码过程:

1)创建一个UIWindow对象,其大小为当前屏幕的大小

2)创建一个控制器

3)设置window对象的根控制器(初始页面)

4)设置window对象为key window 并显示

什么是key window?

即主窗口,同一时刻只有一个窗口是主窗口

主窗口能够接收各种事件,如触摸事件、运动事件、键盘事件等。

UIWindow的父类是UIView

  • 控制器子类

对于UIKit中的使用,一是拿过来直接使用,二是实现子类

实现子类的好处是:将操作封装(高内聚低耦合)

控制器子类:

如UIViewController子类AMViewController

控制器中的几个应重写方法:

init方法:控制器对象被创建后初始化时的调用

该方法中应当先调用父类方法

通常在该方法中添加与视图无关的操作

viewDidLoad方法:控制器对象管理的view被加载时调用

该方法中应当先调用父类方法

通常在该方法中添加与视图相关的操作

- (void) viewDidLoad {
    [super ViewDidLoad];
    // Do any additional setup after loading the view.
}
  • UIView的基本属性
//背景颜色
@property(nonatomic, copy) UIColor *backgroundColor
//透明度
@property(nonatomic) CGFloat alpha
//视图对象的ID
@property(nonatomic) NSInteger tag
//是否隐藏
@property(nonatomic, getter=isHidden) BOOL hidden
//所在window
@property(nonatomic, readonly) UIWindow *window
  • UIView的子视图

UIView是容器对象:

每一个UIView都是一个容器,能容纳其他UIView。

容纳其他UIView的UIView我们称之为父控件,被容纳的UIView我们称之为子控件。

子控件的存在依赖于父控件的存在,子控件的位置等属性是以父控件作为基准的。

相关属性:

@property(nonatomic, readonly) UIView *superview
@property(nonatomic, readonly, copy) NSArray *subviews

添加子视图:

subview在显示到屏幕上时,是位于superview上层的 ,添加的方法:

 - (void)addSubview:(UIView *)view

同一个view的subview是按照加入的顺序显示对应层的,越晚加入的subview显示在越上层,反之也是如此

用superview可以直接管理subview的层 。相关方法:

- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview
- (void)bringSubviewToFront:(UIView *)view
- (void)sendSubviewToBack:(UIView *)view
- (void)removeFromSuperview
- (UIView *)viewWithTag:(NSInteger)tag

子视图的位置及尺寸:

UIView对象包含以下与位置及尺寸相关的属性:

@property(nonatomic) CGRect frame    // frame属性(以父视图为坐标原点)
@property(nonatomic) CGRect bounds   // bounds属性(以自身为坐标原点)
@property(nonatomic) CGPoint center  // center属性(以俯视图为坐标原点)
@property(nonatomic) CGAffineTransform transform  // 形变属性

视图的坐标系:

时间: 2024-08-24 22:34:49

UIKit框架(2)框架简介的相关文章

Net框架下-ORM框架LLBLGen的简介(转载)

Net框架下-ORM框架LLBLGen的简介 http://www.cnblogs.com/huashanlin/archive/2015/02/12/4288522.html 官方网址:http://www.llblgen.com/

AOP框架之AspectJ简介

这几天看JAVA基础看的有点头疼,决定时不时的换换口味,准备开始调研一些现在流行的技术,于是,开始埋头思考自己知识的盲区(当时,自己的知识盲区茫茫多...),想了几天后,决定要开始研究一下几种技术及实现原理. 1.AOP技术应用及实现原理. 2.quartz调度的DB持久模式及集群模式的实现及原理. 3.Mysql分库分表的方法. 4.JFinal框架的学习. 目前先暂定这个日常把,毕竟想搞定一块以我的水平来看,都得一周时间. 那么今儿我们就先来谈一谈AspectJ的实现吧,类似这样的文章在CS

各类主流框架及设计模式简介

1,使用框架技术的优势:1)不用考虑公共问题,框架已经为我们做好了2)可以专心在业务逻辑上,保证核心业务逻辑的开发质量3)结构统一,便于学习,维护4)最重要的一点:框架中集成了前人的经验,可以帮助新手写出稳健.性能优良而且结构优美的高质量程序:2,什么是框架:框架(Framework)是一个提供了可重用的公共结构的半成品.一方面提供了可以拿来就用的工具,也提供了可重用的设计:框架使混乱的东西变得结构化:框架是一组协同工作的组件:3,java中的主流框架:1)Struts框架:是MVC设计模式的体

Python之Django框架执行流程简介

我为大家简单阐述一下Django框架执行的大概流程. Django框架的执行流程    1.浏览器发送请求    2.服务器接收请求并将请求转发给Django框架    3.框架处理请求,如果是请求数据就去找model,如果请求时模版就去找template,然后将模板或数据读取并返回给服务器一个相应.    4.服务器再将相应转发给客户端 原文地址:https://www.cnblogs.com/chao666/p/12093912.html

jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了很多内容,然后继续输入一个"e"后,提示的范围明显就变小了. 注:在文末我会给出完整源代码的下载链接,以供大家参考 二 具体实现 1 在eclipse for java ee中创建一个Java Web工程,然后导入相应的jar包,特别说明的是:这里要导入一个额外的dwr.jar.也就是说,

框架----Web框架本质

一.Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 1 #!/usr/bin/env python 2 #coding:utf-8 3 4 import socket 5 6 def handle_request(client): 7 buf = client.recv(1024) 8 client.send("HTTP/1.1 200 OK\r\n\r\n") 9 client.send("

介绍开源的.net通信框架NetworkComms框架 源码分析

原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 售价249英镑 我曾经花了2千多购买过此通讯框架, 目前作者已经开源  许可是:Apache License v2 开源地址是:https://github.com/MarcFletcher/NetworkComms.Net 这个框架给我的感觉是,代码很优美,运行很稳定,我有一个项目使用此框架已经稳定运行1年多.这个框架能够

PHP MVC框架 Laravel框架 ,华而不实

真心想找一款能够长久支持的框架,对比了CodeIgniter.Kohana.CakePHP 2.x.Yii2.Symfony2.Laravel,看到网络上对Laravel框架那么的好评如潮. Yii2.symfony2太庞大,不适合中小型项目,ThinkPHP已经做过,所以选择就只剩下Laravel. 但是使用了Laravel用起来的最终评价却是,这一款框架的支持太少了.不是功能,而是他的文档太简陋,每个功能就寥寥几句说明,完全靠开发者自己去摸索,去自己测试出他功能到底怎么用.一个Route总共

Android学习之——自己搭建Http框架(2)——框架扩展

· 本文主要讲解的是Json指定转化成对象返回,下载进度更新,随时取消Request请求 一.Json指定转化成对象返回 上篇文章主要讲基础的框架搭建起来了,这次需要做一些些的扩展,这里Json转化用到了google的Gson. 上篇文章,我们直接返回了String的字符串,那么如果是请求返回回来的是Json格式的,我们能否在数据返回的时候将数据转化成需要的对象呢.答案当然是可以的. 我们可以在UI线程中创建Callback的时候将预处理的对象放入进去,还是直接代码描述比较清楚:        

框架集框架集

#框架集 # <html> <frameset cols="25%,50%,25%"> <frame src="frame_a.htm" /> <frame src="frame_b.htm" /> <frame src="frame_c.htm" /> </frameset> </html> 另一种解释 <html> <he