这是我参与「第四届青训营 」笔记创作活动的的第5天
iOS App
App的五种状态
- Not Running
- Inactive
- Active
- Background
- Suspended
App的生命周期,就是根据这些状态之间进行变化而在UIApplicationDelegate中响应的回调方法,7种常用的回调方法:
- application:willFinishLaunchingWithOptions: 在App启动时调用表示应用加载进程已经开始,常用来处理应用状态的存储和恢复
- application:didFinishLaunchingWithOptions: 表示App将从未运行状态进入运行状态,用于对App的初始化操作
- applicationDidBecomeActive: 当应用即将进入前台运行时调用
- applicationWillResignActive: 当应用即将进从前台退出时调用
- applicationDidEnterBackground: 当应用开始在后台运行的时候调用
- applicationWillEnterForeground: 当程序从后台将要重新回到前台(但是还没变成Active状态)时候调用
- applicationWillTerminate: 当前应用即将被终止,在终止前调用的函数。通常是用来保存数据和一些退出前的清理工作。如果应用当前处在suspended,此方法不会被调用。 该方法最长运行时限为5秒,过期应用即被kill掉并且移除内存。
因此,想要在一个App不同的时期进行对应的操作,可以在其对应的回调方法中进行操作
UIKit
UIkit提供了用于实现界面的窗口和视图架构、用于向应用程序提供多点触摸和其他类型输入的事件处理基础设施,以及管理用户、系统和应用程序之间交互所需的Runloop
CALayer与UIView
iOS中所有的视图都是由UIView的基类派生来的,UIView可以处理触摸事件,CALayer不处理用户的交互,不能响应时间,UIView是对CALayer的封装
常用的控件
UIScrollView
用来显示屏幕放不下的内容,可以上下左右滑动,接下来介绍的UITableView和UICollectionView均继承自UIScrollView
UITableView
UITableView的每行数据都是一个UITableViewCell:
- 每个Cell使用IndexPath来表示位置
- IndexPath又分为section和row,每个节section为一组,其中可以包含多个行row
Cell的重用机制:
如果一个页面内只能显示6个Cell,当下滑时,会把最上面的Cell回收放入回收池中,并将回收池中的Cell用于显示下一个需要显示的Cell
UICollectionView
4个组成部分:
- Cell : 单元格
- section:节
- 补充视图:节的header和footer
- 装饰视图:集合视图的背景视图。
可重用单元格标识identifier:通过可重用单元格标识符可以从集合视图中获取可重用的单元格。
UICollectionViewDelegate: 可以用于响应用户的交互,例如选择某一个cell时触发对应的方法
UICollectionViewDataSource:
- -CollectionView: numberofItemsInSection: 提供某个Section中的列数
- -numberofSectionsInCollectionView: 提供视图中Section的个数
- -collectionView: cellForItemInAtIndexPath: 为某个单元格提供显示数据
- -collectionView: viewForSupplementaryElementOfKind:atIndexPath: 为补充视图提供显示数据