UI学习笔记---第二天

时间:2021-07-15 00:37:54

程序的执行流程

一.自定义视图

自定义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函数时做了跳转,转到了AppDelete中 
 UIApplicationMain 

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

UI学习笔记---第二天

UIWindow

UIWindow作为应用程序的窗⼝,在应⽤程序启动的时候就要加载,

各种UI界面都是借助window来呈现的。 UIWindow在创建的时候,应该和屏幕一样大。

通过[UIScreen mainScreen].bounds可以获得屏幕⼤小。

[self.window makeKeyAndVisible];//让window变的可视,即显⽰ window

UI学习笔记---第二天的更多相关文章

  1. 《DOM Scripting》学习笔记-——第二章 js语法

    <Dom Scripting>学习笔记 第二章 Javascript语法 本章内容: 1.语句. 2.变量和数组. 3.运算符. 4.条件语句和循环语句. 5.函数和对象. 语句(stat ...

  2. The Road to learn React书籍学习笔记&lpar;第二章&rpar;

    The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...

  3. &lbrack;HeadFrist-HTMLCSS学习笔记&rsqb;第二章深入了解超文本:认识HTML中的&OpenCurlyDoubleQuote;HT”

    [HeadFrist-HTMLCSS学习笔记]第二章深入了解超文本:认识HTML中的"HT" 敲黑板!!! 创建HTML超链接 <a>链接文本(此处会有下划线,可以单击 ...

  4. &lbrack;struts2学习笔记&rsqb; 第二节 使用Maven搞定管理和构造Struts 2 Web应用程序的七个步骤

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40303897 官方文档:http://struts.apache.org/releas ...

  5. 菜鸟Python学习笔记第二天:关于Python黑客。

    2016年1月5日 星期四 天气:还好 一直不知道自己为什么要去学Python,其实Python能做到的Java都可以做到,Python有的有点Java也有,而且Java还是必修课,可是就是不愿意去学 ...

  6. 《JavaScript权威指南》学习笔记 第二天 下好一盘大棋

    前段学习js的时候总是零零散散的,以至于很多东西都模棱两可.时间稍微一久,就容易忘记.最主要的原因是这些东西,原来学的时候就不是太懂,以至于和其他知识无法形成记忆链,所以孤零零的知识特别容易忘记.重温 ...

  7. Android学习笔记&lpar;第二篇&rpar;View中的五大布局

    PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Act ...

  8. js学习笔记第二篇

    Js笔记整理 1.StringAPI a)        大小写转换:str.toUpperCase();str.toLowerCase(); b)        获取指定位置字符: Str[i]-- ...

  9. C&plus;&plus;学习笔记第二天:几个知识点

    第一天,囫囵吞枣的把C++的基本概念撸了一遍 有几个地方不太理解,今天有针对性的学习一下 1.namespace 自定义命名空间,主要为了解决类.函数和全局变量的命名冲突问题. 调用某个命名空间里的符 ...

随机推荐

  1. 前端进阶试题css(来自js高级前端开发---豪情)既然被发现了HOHO,那我就置顶了嘿嘿!觉得自己技术OK的可以把这套题目做完哦,然后加入高级前端的社区咯

    http://www.cnblogs.com/jikey/p/4426105.html js高级前端开发加群方法(此群很难进,里面纯技术,严禁广告,水群) 完整题目做完发邮箱(jikeytang@16 ...

  2. Power BI for Office 365(八)共享查询

    在Power Query中,你不但可以搜索线上的数据,也可以把自己的数据发布到线上供其它人检索.Power Query通过Power BI站点提供了这种内置的分享功能.在Excel中,Anna打开了她 ...

  3. Entity Framework 学习笔记

    1.自定义数据库链接字符串上下文 public class PetDbContext : DbContext { public PetDbContext() : base("name=Dem ...

  4. Sql server 2008 R2 配置管理工具服务显示远程过程调用失败&colon;0x800706be

    Sql server 2008 R2 配置管理工具服务显示远程过程调用失败:0x800706be   今天在其他电脑配置 SQl server 2008 R2,安装完成后,发现打开配置管理工具服务 : ...

  5. 使用docker搭建lnmp环境

    Docker容器LNMP环境搭建 安装 制作镜像 启动并关联实例 安装 系统环境 硬件型号: ThinkPad T520 系统版本: ubuntu 14.04 CPU: i7 RAM: 8G 添加软件 ...

  6. &lbrack;ES4封装教程&rsqb;3&period;使用 Easy Sysprep v4 封装 Windows 7

    (一)安装与备份系统 1.安装 Windows 7 可能很多人会说,安装Win7谁不会,这也用说?装Win7的确人人都会,但如何安装才是最适合系统封装的,就未必是人人都会了.安装是封装之本,没有好的安 ...

  7. &sol;etc&sol;shadow

    这样,用户帐户本身在 /etc/passwd 中定义.Linux 系统包含一个 /etc/passwd 的同伴文件,叫做 /etc/shadow.该文件不像 /etc/passwd,只有对于 root ...

  8. 在Java控制台模拟dos命令下操作MySQL

    一.导入mysql的驱动:"com.mysql.jdbc.Driver", 必须将mysql的驱动 包(jar文件)导入到本工程中. Class.forName("com ...

  9. IT的发展路径

    1.掌握更多的技能 2.掌握某一门深入的技能 3.掌握更多的工具 4.掌握业务

  10. Spring Security构建Rest服务-0900-rememberMe记住我

    Spring security记住我基本原理: 登录的时候,请求发送给过滤器UsernamePasswordAuthenticationFilter,当该过滤器认证成功后,会调用RememberMeS ...