这是我参与「第四届青训营 」笔记创作活动的第5天
iOS App的生命周期
-
main函数是iOS App的入孔
- 创建应用程序所需的核心对象
- 读取storyboard文件,来加载用户界面
- 调用自定义的代码,用来定制应用程序的启动过程
-
UIApplication
- UIApplication函数会创建一个UIApplication对象,并且为其指定代理对象AppDelegate,由此开启应用程序的生命周期
-
UIApplicationMain
- 单例模式
- UIApplication是iOS的应用实例,负责监听应用级事件
- AppDelegate是应用级事件代理,管理应用程序的生命周期、通知事件、外部调用等事件
-
iOS App的生命周期
- Not Running:应用程序未启动或者被终止
- Inactive:应用程序在前台运行,但是不能接收事件(UIEvent)。应用程序在不同状态之间切换时,经常会存在该状态。例如:在App显示启动页时,是从Not Running到Active的过程,中间会存在Inactive状态
- Active:应用程序在前台运行,可以接收事件
- Background:应用程序处于后台并且正在执行代码。绝大多数应用程序在进入挂起状态时,会短暂经历这个状态
- Suspended:应用程序处于后台,并且不能执行代码。此时,当内存不足时,操作系统有可能会自动把挂起状态的应用程序移除,以便给处于Active状态的应用程序提供更多的内存空间
视图
-
Foundation:无关界面,提供基础API
-
UIKit:提供基础的视图类库
-
UIview
- 是所有视图的根类
- 只是CALayer的封装
- UIView处理布局和触摸事件,不直接处理绘图和动画
- CALayer负责绘图和动画,不处理触摸事件
-
UIViewContriller
- 所有控制器的基类,负责视图显示、界面跳转
- init -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> viewWillUnload -> viewDidUnload -> dealloc
- init中最好不要出现创建view的代码,应当进行数据初始化
- loadView中适合进行view的创建和初始化
- viewDidLoad适合创建一些附加view
- viewWillAppear进行一些显示前的处理 键盘弹出\特殊动画
- viewDidAppear显示动画后需要的操作
-
Masonry
- Masonry是一个对系统NSLayoutConstranint进行封装的第三方自动布局框架
-
zPositon
- 图形变换
- 视图移动,触摸层不会移动
UI控件
- UICollectionview
- Layout
- DataSource
- Delegate