App与UIKit | 青训营笔记

85 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

iOS App

App的五种状态

  1. Not Running
  2. Inactive
  3. Active
  4. Background
  5. 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:

  1. 每个Cell使用IndexPath来表示位置
  2. 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: 为补充视图提供显示数据