UI学习笔记---第二天
程序的执行流程
一.自定义视图
自定义UILebal-UITextField视图
⾃定义视图:系统标准UI之外,⾃己组合而出的新的视图。
实际开发中,我们还需⾃定义视图。积累⾃己的代码库。⽅便开发。 ⾃己封装的视图,能像系统UI控件一样,⽤于别的项目中,能⼤大降 低开发成本,提⾼开发效率。
自定义视图步骤
根据需求的不同,⾃定义视图继承的类也有所不同。⼀般⾃自定义的视图会继承于UIView。以下是⾃定义视图的要点:
1、创建⼀个UIView子类
2、在类的初始化方法中添加子视图
3、类的.h⽂文件提供一些接口(方法),便于外界操作子视图
高质量代码特点:可复用,可移植,精炼等 自定义视图使用了一种设计模式--组合设计模式 iOS新控件往往都是由已有控件组合而成
二.iOS程序启动流程
main函数是程序入口
任何⼀个程序,无论是基于Mac OS还是iOS,程序都是从main.m文
件的main函数开始执行的。
int main(int argc, char * argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil,
NSStringFromClass([AppDelegate class]));
}
}
UIApplicationMain在程序⼊口函数main函数中调⽤,主要实现了3个功能:
创建应用程序(UIApplication)实例
创建应⽤程序代理实例
建⽴事件循环(runloop:死循环,不断检测程序运⾏状态,是否被触 摸、晃动等)
UIApplicationMain 剖析
int UIApplicationMain (
int argc,
char *argv[],
NSString *principalClassName,
NSString *delegateClassName
);
1、principalClassName:应用程序对象的类名(UIApplication或其⼦子类)
2、delegateClassName:应⽤程序delegate的类名。(任何接受了 UIApplicationDelegate的类)
UIApplicationMain根据上述两个类名创建应⽤程序实例、应⽤程序代理实例。
然后建⽴事件循环(runloop),检测程序的各种事件(程序开始启动,接收到触摸等)
应用程序代理
应⽤程序代理,主要检测应用程序的状态并做出相应的处理。
应⽤程序的状态有很多,比如:程序启动、进⼊活跃状态、进到后台、内存警告、收到远程消息等等
任何接受了UIApplicationDelegate协议的对象都可以成为应用程序 代理。
⼀旦应用程序的某种状态触发,就会执⾏相应的代理方法
UIApplicationDelegate
UIWindow
UIWindow作为应用程序的窗⼝,在应⽤程序启动的时候就要加载,
各种UI界面都是借助window来呈现的。 UIWindow在创建的时候,应该和屏幕一样大。
通过[UIScreen mainScreen].bounds可以获得屏幕⼤小。
[self.window makeKeyAndVisible];//让window变的可视,即显⽰ window
UI学习笔记---第二天的更多相关文章
- 《DOM Scripting》学习笔记-——第二章 js语法
<Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...
- The Road to learn React书籍学习笔记(第二章)
The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...
- [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的“HT”
[HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...
- [struts2学习笔记] 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤
本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...
- 菜鸟Python学习笔记第二天:关于Python黑客。
2016年1月5日 星期四 天气:还好 一直不知道自己为什么要去学Python,其实Python能做到的Java都可以做到,Python有的有点Java也有,而且Java还是必修课,可是就是不愿意去学 ...
- 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
前段学习js的时候总是零零散散的,以至于很多东西都模棱两可.时间稍微一久,就容易忘记.最主要的原因是这些东西,原来学的时候就不是太懂,以至于和其他知识无法形成记忆链,所以孤零零的知识特别容易忘记.重温 ...
- Android学习笔记(第二篇)View中的五大布局
PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念 view是什么呢?我们已经知道一个Act ...
- js学习笔记第二篇
Js笔记整理 1.StringAPI a) 大小写转换:str.toUpperCase();str.toLowerCase(); b) 获取指定位置字符: Str[i]-- ...
- C++学习笔记第二天:几个知识点
第一天,囫囵吞枣的把C++的基本概念撸了一遍 有几个地方不太理解,今天有针对性的学习一下 1.namespace 自定义命名空间,主要为了解决类.函数和全局变量的命名冲突问题. 调用某个命名空间里的符 ...
随机推荐
- Mysqldump参数大全
Mysqldump参数大全(参数来源于mysql5.5.19源码) 参数 参数说明 --all-databases , -A 导出全部数据库. mysqldump -uroot -p --al ...
- 一个高在线(可以超过1024)多线程的socket echo server(pthreads 和 libevent扩展)
研究了3周吧,本来打算用pthreads+event扩展的,结果event扩展太原始了,太多函数了,实在不知道怎么在外部随时发送数据给客户端,所以改用libevent, 改用libevent之后花了2 ...
- Android 之 数据存储
在Android操作系统中,提供了5种数据存储方式:SharedPreferences存储,文件存储,SQLite数据库存储,ContentProvider存储和网络存储. 一.SharedPrefe ...
- MySQL v5.1.72 + v5.6.19
MYSQL是一个多线程的,结构化查询语言(SQL)数据库服务器.SQL 在世界上是最流行的数据库语言.MySQL 的执行性能非常高,运行速度非常快,并非常容易使用.是一个非常捧的数据库. MySQL ...
- MicroPython开发板TPYBoard关于USB-HID的应用
USB-HID是Human Interface Device的缩写,属于人机交互操作的设备,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球.电话拨号设备.VCR遥控等等设备. ...
- 转:Java面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101
Java面试题集(51-70) Java程序员面试题集(51-70) http://blog.csdn.net/jackfrued/article/details/17403101 摘要:这一部分主要 ...
- iOS 设计模式之工厂模式
iOS 设计模式之工厂模式 分类: 设计模式2014-02-10 18:05 11020人阅读 评论(2) 收藏 举报 ios设计模式 工厂模式我的理解是:他就是为了创建对象的 创建对象的时候,我们一 ...
- C++ offsetof
这是一个宏,用于计算类中某个成员的地址相对于类实例的偏移量 在C++11中,要求这个类standard_layout 基本用法是这样子的: #include <stdio.h> /* pr ...
- C语言快速排序
复习快速排序,用C语言实现: #include <stdio.h> int quicksort(int begin, int end, int a[], int len); void ma ...
- 技术分享:如何用Solr搭建大数据查询平台
0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才 ...