iOS UIKit基本概念|青训营笔记

329 阅读3分钟

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

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 {
        // Setup code that might create autoreleased objects goes here.
        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生命周期中各个事件的执行方法

www.cnblogs.com/evernight/p…

  • 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是所有控制器的基类,可以负责视图显示,界面跳转等作用。

  1. init:最好不要出现创建view的代码,应当进行数据初始化
  2. loadView:进行view的创建和初始化
  3. viewDidLoad:创建一些附加的view和控件
  4. viewWillAppear:进行一些显示前的处理,比如键盘弹出或特殊动画
  5. viewDidAppear:在显示动画后需要做的操作
  6. viewWillDisappear
  7. viewDidDisappear
  8. viewWillUnload
  9. viewDidUnload
  10. 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:导航条