OCUI界面设计:程序基本结构

来源:互联网 发布:老年人意外伤害数据 编辑:程序博客网 时间:2024/06/05 17:04

UIWindow 窗口

简介

  • UIWindow作为程序的窗口,容纳所有的界面元素。

  • 程序中一般只有一个window,默认由系统初始化。

  • 一个工程需要一个UIWindow窗口对象,并且同一时间仅能有一个UIWindow被激活。

  • 在iOS里UIWindow是UIView的子类,initWithFrame: 是标准的视图初始化方法,接受一个CGRect结构体类型来制定视图的位置和大小。

初始化

- (instancetype)initWithFrame:(CGRect)frame;

手动创建UIWindow步骤:

steps 1:在工程目录中选中info.plist配置文件;

这里写图片描述

steps 2:找到Main storyboard file base name字段,将其值”Main”删除。

这里写图片描述

steps 3:在Appdelegate.m文件中,找到协议方法didFinishLaunchingWithOptions(视图加载完成),在方法内部初始化UIWindow并且将其呈现出来,window属性已由系统在Appdelegate.h文件中声明。

这里写图片描述

steps 4:运行工程,程序崩溃,控制台输出信息如下:

这里写图片描述

根据崩溃信息,我们可以知道,window需要一个 root view controller(根视图控制器)来作为应用程序界面元素的一个载体,而根视图控制器只要是继承于 UIViewController 的对象即可,因此,我们可以直接引用系统为我们创建的 ViewController 这个类,该类继承于 UIViewController。将其导入到Appdelegate.m文件中,初始化并将其置为window的根视图控制器即可,如下所示:

这里写图片描述

程序结构

Main函数:

  • 创建自动释放池@autoreleasepool,跳转到UIApplicationMain函数。

UIApplicationMain函数:

  • 处理运行时所需的实际工作。
  • 需要传入的参数包含应用程序委托类名。

UIApplicationDelegate:

  • 负责处理关键的系统消息。

AppDelegate:

  • 实现了UIApplicationDelegate协议方法,作为程序的主入口。
// 程序加载完成- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // 输出当前方法名称,_cmd表示当前方法的选择器,SEL类型。    NSLog(@"%@", NSStringFromSelector(_cmd));#pragma mark - 手动创建UIWindow    // 获取屏幕大小初始化UIWindow    _window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];    // 设置UIWindow背景颜色    _window.backgroundColor = [UIColor whiteColor];    // UIWindow层级    _window.windowLevel = UIWindowLevelNormal;    // 将UIWindow作为程序的key并且显示出来    [_window makeKeyAndVisible];    // 设置UIWindow根视图控制器    ViewController *rootVc = [[ViewController alloc] init];    _window.rootViewController = rootVc;    [rootVc release];    return YES;}// 程序即将失活- (void)applicationWillResignActive:(UIApplication *)application {    NSLog(@"%@", NSStringFromSelector(_cmd));}// 程序进入后台- (void)applicationDidEnterBackground:(UIApplication *)application {    NSLog(@"%@", NSStringFromSelector(_cmd));}// 程序即将进入前台- (void)applicationWillEnterForeground:(UIApplication *)application {    NSLog(@"%@", NSStringFromSelector(_cmd));}// 程序处于活跃状态- (void)applicationDidBecomeActive:(UIApplication *)application {    NSLog(@"%@", NSStringFromSelector(_cmd));}// 程序即将退出:异常退出- (void)applicationWillTerminate:(UIApplication *)application {    NSLog(@"%@", NSStringFromSelector(_cmd));}
2 0
原创粉丝点击