iOS App的生命周期
iOS App的入口
main函数是iOS App的入口。
当我们从创建一个iOS App的时候,Xcode会自动为我们提供一个main函数实现。
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
NSString * appDelegateClassName;
@autoreleasepool {
appDelegateClassName = NSStringFromClass([AppDelegate class]);
}
return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}
一般情况下,我们不应该修改此main函数实现。
UIApplicationMain
上方代码中的UIApplicationMain函数会创建一个UIApplication对象,并且为其指定代理对象AppDelegate,由此开启应用程序的生命周期。
UIApplication是单例模式
,一个应用程序只会有一个UIApplication对象。
- UIApplication是iOS的应用实例,负责监听应用级事件。
- AppDelegate是应用级事件代理,管理应用程序的生命周期、通知事件、外部调用等事件。
App的生命周期
- Not Running:未运行。
- Inactive:前台非活动状态。处于前台,但是不能接受事件处理。
- Active:前台活动状态。处于前台,能接受事件处理。
- Background:后台状态。进入后台,如果有可执行代码,会执行代码,代码执行完毕,程序挂起。
- Suspended:挂起状态。进入后台,不能执行代码,如果内存不足,程序会被杀死。
App生命周期中各个事件的执行方法
https://www.cnblogs.com/evernight/p/3818570.html
- applicationWillResignActive:将要进入非活动状态执行。在此期间,应用程序不接收消息或事件,比如来电话了。
- applicationDidBecomeActive:已经进入活动状态执行。
- applicationDidEnterBackground:已经进入后台的时候执行。所以要设置后台继续运行,则在这个函数里面设置。
- applicationWillEnterForeground:将要从后台回到前台执行。
- applicationWillTerminate:将要退出时调用。通常用来保存数据和一些退出前的清理工作。
- applicationDidReceiveMemoryWarning:操作系统因内存太多而终止应用程序前会执行此方法。通常在这里进行内存清理工作防止程序被终止。
- applicationSignificantTimeChange:当系统时间发生改变时执行。
- applicationDidFinishLaunching:当程序载入后执行。
视图与视图层级
什么是UIView
UIView就是在屏幕上显示的一个矩形块。除了展示视图之外,还可以拦截用户输入。
iOS中,UIView是所有视图的根类。
图层(CALayer)与视图(UIView)
UIView实际上是CALayer的封装。
在层级关系上,UIView与CALayer有相平行的层级关系。
- UIView处理布局和触摸事件。
- CALayer负责绘图和动画。
UIView的职责就是创建并管理CALayer。确保子视图在层级关系中添加或移除的时候,对应的CALayer也能在层级关系树上有相同的操作。
UIViewController生命周期
视图控制器UIViewController是所有控制器的基类,可以负责视图显示,界面跳转等作用。
- init:最好不要出现创建view的代码,应当进行数据初始化
- loadView:进行view的创建和初始化
- viewDidLoad:创建一些附加的view和控件
- viewWillAppear:进行一些显示前的处理,比如键盘弹出或特殊动画
- viewDidAppear:在显示动画后需要做的操作
- viewWillDisappear
- viewDidDisappear
- viewWillUnload
- viewDidUnload
- dealloc
图层几何学:frame、bounds、center
UIView有三个重要的属性:frame、bounds、center
在CALayer中对应为:frame、bounds、position
UIView的frame、bounds和center属性仅仅是存取方法,视图绘制由CALayer进行
常用的UI控件
- UIButton:按钮
- UILabel:文本标签
- UITextField:文本输入框
- UIImageView:图片显示
- UITableView:表格
- UICollectionView:九宫格
- UIProgressView:进度条
- UISlider:滑块
- UISwitch:开关
- UISegmentControl:选项卡
- UIActivityIndicator:圈圈
- UIAlerterView:中间弹窗
- UIActionSheet:底部弹框
- UIScrollView:滚动的控件
- UIPageControl:分页控件
- UITextView:能滚动的文字显示控件
- UIPickerView:选择器
- UIDatePicker:日期选择器
- UIWebView:网页显示控件
- UIToolbar:工具条
- UINavigationBar:导航条