L001-程序基本结构

UI用户界面简介

  • 对应开发环境:Cocoa Touch

    Cocoa:苹果公司为Mac OS X系统所提供的面向对象的集成开发环境,核心框架是FoundationKit及ApplicationKit;
    Cocoa Touch:苹果公司为iOS系统提供的面向对象的集成开发环境,与Cocoa不同的是其中集成了多点触碰的处理,核心框架是FoundationKit及UIKit。

  • 对应系统:iOS8

  • 对应设备:iPhone、iPad、iPod Touch

  • 对应设备分辨率:

  • 320x480:iPhone4
    320x568:iPhone5、iPhone5S、iPod Touch
    1024x768:iPad

  • 开发工具:Xcode6这里写图片描述、iOS Simulator、真机调试

iPhone SDK

  • iPhone SDK是苹果公司提供的iPhone开发工具包;

  • 包括界面开发工具、集成开发工具、框架工具、编译器、开发样本和一个模拟器;

iOS工程创建方法

  • 打开Xcode -> Create a new Xcode project或File -> New -> Project;
  • 选择工程环境及模版,iOS Application -> Empty Application;
  • 配置工程信息:
    Product Name:工程名称
    Organization Name:组织名、机构名称
    Company Identifier:公司标识(与证书及描述文件有关)
    Language:开发语言
    Devices:工程对应的设备
    Use Core Data:使用CoreData存储

  • 选择工程的存储路径完成创建。

iOS程序基本结构

Main函数
  • 创建自动释放池@autoreleasepool,跳转到UIApplicationMain函数。
UIApplicationMain函数:
  • 处理运行所需的实际工作。
  • 需要传入的参数包含应用程序委托类名。
UIApplicationDelegate
  • 负责处理关键的系统消息
AppDelegate
  • 实现了UIApplicationDelegate协议方法,作为程序的主入口。
NSStringFromClass函数
  • 此函数根据一个Class参数生成一个字符串。

iOS程序生命周期

(1) 用户点击启动程序,进入main函数并将控制权交给UIApplicationMain,开始程序的生命周期;

(2) AppDelegate实现UIApplicationDelegate协议接收并处理程序状态信息;

注意:AppDelegate中是开发人员可操作的部分,作为程序的入口。

(3) 程序进入事件循环,接收并处理用户的交互信息;

(4) 程序结束或暂停(终结程序或切换到其它程序)

委托方法:
(1)程序加载完成,应用程序首次启动时调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
    return YES;
}

(2)应用程序将要进入非活跃状态,用户点击Home键时

- (void)applicationWillResignActive:(UIApplication *)application {
   NSLog(@"%@", NSStringFromSelector(_cmd));
}

(3)程序进入后台运行时,前提是程序支持后台

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
   NSLog(@"%@", NSStringFromSelector(_cmd));
}

(4)程序即将进入前台

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

(5)程序处于活跃状态:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

(6)程序即将结束:异常结束

- (void)applicationWillTerminate:(UIApplication *)application
{
    NSLog(@"%@", NSStringFromSelector(_cmd));
}
  • 注意:当程序被中断时,我们应该进行的处理包括:
    停止Timer和其他周期性的任务
    停止任何正在运行的请求(支持后台运行的可以保留)
    暂停视频的播放
    如果是游戏那就暂停它

UIWindow

UIWindow基本介绍
  • UIWindow:程序的窗口,作为设备的主窗口存在,容纳所有的界面元素(界面对象)。
  • 一个工程一定需要一个UIWindow窗口对象,并且同一时间仅有一个UIWindow被激活。
  • iOS程序默认一个应用程序只有一个主窗口。
初始化方法
  • 获取主屏幕大小来初始化window
  • initWithFrame:标准的视图初始化方法,接收一个CGRect结构体类型来指定视图的位置和大小
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIWindow优先等级
  • UIWindowLevelNormal:普通window
  • UIWindowLevelStatusBar:状态栏级window
  • UIWindowLevelAlert:警示级window

注意:它们的优先级依次由低到高,优先级别决定了window的显示和交互优先度。

 _window.windowLevel = UIWindowLevelNormal;
window上可直接添加其他视图

调用:- (void)addSubview:(UIView *)view;

注意:一般情况下,我们遵循MVC设计模式,先设置根视图控制器(rootViewController),让根视图控制器去执行视图的加载与切换。

_window.rootViewController = [[UIViewController alloc] init];

将window作为程序的主窗口,并呈现出来

 [_window makeKeyAndVisible];

完整代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 输出当前方法名称
    // _cmd:表示当前方法的选择器,SEL类型
    NSLog(@"%@", NSStringFromSelector(_cmd));
    // UIWindow:程序的窗口,作为设备的主窗口存在,容纳所有的界面元素(界面的对象)
    // 一个工程一定需要一个UIWindow窗口对象,并且同一时间仅有一个UIWindow被激活
    // initWithFrame:标准的视图初始化方法,接收一个CGRect结构体类型来指定视图的位置和大小
    _window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    // 设置Window等级
    _window.windowLevel = UIWindowLevelNormal;
    // 设置根视图控制器
    _window.rootViewController = [[UIViewController alloc] init];
    // 将window作为应用程序的主窗口并呈现出来
    [_window makeKeyAndVisible];
    return YES;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值