• iOS UIKit基本概念


    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    一般情况下,我们不应该修改此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是所有控制器的基类,可以负责视图显示,界面跳转等作用。

    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:导航条
  • 相关阅读:
    搜题公众号搭建
    【短文】在Linux中怎么查看文件信息
    React整理总结(五、Redux)
    AE(自动编码器)与VAE(变分自动编码器)的区别和联系?
    EMC学习笔记(三)滤波
    初步认识OpenGL之QT
    【51单片机】:串口通信控制LED亮灭任务
    Spring 静态属性赋值 @value 注入静态属性 @Value注解用法
    若依前后端分离项目部署
    回归算法全解析!一文读懂机器学习中的回归模型
  • 原文地址:https://blog.csdn.net/qq_15989473/article/details/126147884