main.m
#import <UIKit/UIKit.h> #import "AppDelegate.h" //整个APP程序的主函数 入口函数 int main(int argc, char * argv[]) { NSString * appDelegateClassName; //自动内存释放池 @autoreleasepool { // Setup code that might create autoreleased objects goes here. appDelegateClassName = NSStringFromClass([AppDelegate class]); } //UIKit 框架结构的启动函数 //参数一 agrc 启动时带有参数的个数 //参数二 argv 参数列表 //参数三 要求传人一个主框架类对象,如果参数为nil 系统会用默认框架类作为主框架类名 //参数四 主框架的代理类的名字 return UIApplicationMain(argc, argv, nil, appDelegateClassName); }
SceneDelegate.m
#import "ViewController.h" #import "SceneDelegate.h" @interface SceneDelegate () @end @implementation SceneDelegate - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { //创建一个window对象 //UISCreen :表示屏幕硬件类 //mainSCreen: 获取主屏幕对象 //.bounds 获取当前主屏幕的大小 if (@available(ios 13, *)) { if (scene) { self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene]; self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height); // self.window.backgroundColor=[UIColor redColor]; //创建视图控制器对象 ViewController* vcroot =[[ViewController alloc] init]; //对窗口的根视图控制器进行赋值操作 属于windows属性 //整个UIKit框架中只有一个根视图控制器 属于windows的属性 //视图控制器用来管理界面和处理界面逻辑类对象 //程序启动前必须对根视图控制器赋值 self.window.rootViewController=vcroot; //将windos作为主视图并且显示出来 [self.window makeKeyAndVisible]; } } }
UIViewController.m
#import "ViewController.h" @interface ViewController () @end @implementation ViewController //当视图控制器第一次被加载显示视图时,调用此函数 //布局初始化视图来使用,初始化资源使用 //调用父类的加载视图函数 - (void)viewDidLoad { [super viewDidLoad]; UIView* view =[[UIView alloc]init]; view.frame=CGRectMake(100, 100, 100, 200); //将视图添加在当前控制视图上 [self.view addSubview:view]; view.backgroundColor=[UIColor orangeColor]; self.view.backgroundColor=[UIColor blueColor]; } @end
UIViewController 使用
ViewController.m
#import "ViewController.h" #import "ViewC02.h" @interface ViewController () @end @implementation ViewController //当屏幕点击时调用此函数 -(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //创建视图控制器二 ViewC02* vc=[[ViewC02 alloc]init]; //显示一个新的视图控制器界面到屏幕上 //P1 新的视图控制器对象 //P2 是否使用动画切换效果 //P3 切换结束后功能调用 不需要传nil [self presentViewController:vc animated:YES completion:nil]; } //第一次程序加载视图是调用 - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor=[UIColor blueColor]; NSLog(@"viewDidLoad 第一次加载视图"); } //当视图控制器的视图即将显示时,调用此函数 //视图分为: 1.显示前 2.正处于显示状态 3.已经被隐藏 //参数 表示是否有动画切换后显示 -(void) viewWillAppear:(BOOL)animated { NSLog(@"viewWillAppear,视图即将显示"); } //视图还是显示在屏幕上 -(void) viewWillDisappear:(BOOL)animated { NSLog(@"viewWillDisappear,视图即将消失"); } //当视图已经显示到屏幕后到瞬间调用此函数 //参数: 表示是否调用动画切换显示的 //当前状态已经显示到屏幕上了 -(void) viewDidAppear:(BOOL)animated { NSLog(@"viewDidAppear,视图已经显示"); } //当前试图已经消失从屏幕上 //参数: 表示是否用动画切换显示的 //当前状态当前视图控制器已经消失在屏幕上 -(void) viewDidDisappear:(BOOL)animated { NSLog(@"viewDidDisappear,视图已经消失"); } @end
ViewC02.m
#import "ViewC02.h" @interface ViewC02 () @end @implementation ViewC02 - (void)viewDidLoad { [super viewDidLoad]; //控制器2颜色 self.view.backgroundColor=[UIColor orangeColor]; } //点击当前控制器二界面屏幕时 -(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { //使当前控制器消失掉 //P1: 是否动画效果 //P2: 结束后是否调用功能 [self dismissViewControllerAnimated:YES completion:nil]; } @end