应用
开发和游戏开发
IOS
应用立
足的两
大要素:美观
的
UI
界面
(
好的卖相
)和实
用的功
能
IOS开发需要掌握的内容
–语言基础:OC,C,C++(可选学),基础框架(Foundation)
UI : 基础控件(UIWindow、UIScreen、UIButton、UILabel等)、高级控件(IScrollView、ITableView等)
功 能: 数据存取、动画(调试出来的,移动应用的亮点)、事件、网络、多线程等
游戏 : cocos2d 或cocos2d-x(与 UIKit 开发区别比较大,对游戏不感兴趣可以不学,需要学习C++)
iOS系统架构
iOS 是 基于 UNIX 的 ,就系统 的稳 定性而言,要比 其他操作系统好很 多, 我们 完全可以相信这个操作系统!
iOS 的系统架构分为四个层次:
可触摸层
媒体服务层
核心服务层
核心操作系统层
iOS系统架构中各层次的功能
可触摸层( Cocoa Touch ) :为应用程序开发提供各种 有用的框架,并 且大部分均与用户 界面有关,本质上来说它 负责用户在 iOS 设备上的触摸交互 操作
媒体服务层 ( Media Services ) : 负责提供用于构建应用程序的图形和 声音的 API ,可以在应用程序中使用各种 媒体文件,进行音频与视频的录制, 图形绘制 ,以及制作基础的动画效果
核心服务层( Core Services ) :这一层提供了访问 CoreOS 层的硬件功能并包含了 Foundation 框架。正因为如此,这一层提供了构建 iOS 应用程序所需的大量基础元件,例如字符串、数组以及其他通用数据类型 。核心服务层可以访问 iOS 的一些服务,比如网络连接、文件访问、数据库、用户定位 等
核心操作系统层 ( CoreOS ) :这一层次包含了 iOS 操作系统的很多基础组件,其中包括:系统内核 、内存管理、文件系统、电源管理、网络组件和设备驱动等,可以直接和硬件设备进 行 交互
可触摸层
Cocoa
Touch
在 iOS 系统 的 4 个层中 ,我们主要面向的是 CocoaTouch 层
Cocoa Touch
层中有个非常重要的
UIKit
框架
,该框架为应用程序提供了各种可视化组
件
,
如下所示
:
Cocoa Touch 层中的其他框架 ,对于我们应用程序的开发而言,也 是非常 有用的!诸如:访问用户通信录的框架 、获取照片信 息的框架 、负责加速感应器等硬件 支持的框架等等
iOS 框架的使用策略
如果在开发过程中需要用到某些特殊功能时,可以先尝试使用系统自带的框架
这些框架分别来自于 不同的层,对 iOS 系统架构 4 层的理解,可以帮助我们快速找到需要使用的框架
就目前而言,我们只需 对这些框架有个 印象即可,不必每一个都去研究,等用到的时候再去 研究
iOS 系统框架表格
iOS 和
android
系统架构对比
android 是基于 Linux 内核设计的 ,在 Linux 内核上面运行了一个 Java 虚拟机,虚拟机再运行软件。像是在一个系统上面又套了一个系统,所以占内存较大、运行速度略低
iOS 是基于 UNIX 的 ,直接与底层硬件通信。系统底层、应用框架、应用软件都是采用 C/C ++ 或者 Objective-C 写的,所以有很 高的运行效率
IOS应用的开发步骤:
1.新建项目
2. 搭建 UI 界面
3 . 监听 按钮 点击事件
4 . 获取 文本框 内容
5 . 将结果显示在 文本标签 中
新建项目 1
——
选择项目模板
新建项目 2
——
设置项目属性(注意:选择Use Storyboards与不选的区别)
新建项目 3
——
保存项目
新建项目 4
——
运行(command+r)
搭建界面 1——
界面入口
搭建界面 2
——
MainStoryboard.Storyboard
搭建 界面
3
——
显示对象库
搭建 界面
4
——
界面搭建
搭建 界面
5
——
两个细节
监听按钮点击事件 1——
助理编辑器窗口
监听按钮点击 事件
2——
IBAction
告知
代码发生事件
监听按钮点击 事件
3——
建立
IBAction
// 点击你好按钮
- (IBAction)tapHelloButton:(id)sender;
监听按钮点击
事件
4——
准备编写代码
- (IBAction)tapHelloButton:(id)sender
{
}
出现问题:
1.如何获得文本框控件?
2.如何获得文本标签控件?
ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
// 用户名,Outlet告诉程序可以操作对象
// 定义属性之后,Xcode会自动建立Getter & Setter方法
@property (weak,nonatomic)IBOutlet UITextField *userNameText;
// 消息标签
@property (weak,nonatomic)IBOutlet UILabel *helloLabel;
// 点按Hello按钮
- (IBAction)tapHelloButton:(id)sender;
@end
ViewController.m
#import "ViewController.h"
@interface ViewController ()@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
将结果显示在文本标签中
#pragma mark - IBActions
- (IBAction)tapHelloButton:(id)sender
{
// 通常,在一个类的内容,使用自己的属性时,为了提高效率
// 可以使用成员变量代替属性
/**
属性定义的目的,是为了其他的类访问本类时,保证内部数据安全
*///1. 获取文本框内容,并且拼接字符串
NSString *text = [NSStringstringWithFormat:@"你好 %@!",_userNameText.text];
//2. 将结果显示在文本标签中
_helloLabel setText:text];
}
@end
Hello World—
—
运行效果
发现问题:点击按钮时 键盘没有被关掉
让视图关闭键盘
- (IBAction)tapHelloButton:(id)sender
{
//1. 获取文本框中的内容
NSString *text = [NSStringstringWithFormat:@"你好 %@!",_userNameText.text];
//2. 将结果显示在标签中
[_helloLabel setText:text];
//3. 让视图关闭键盘
[self.view endEditing:YES];
}