1.iOS概述
屏幕快照 2017-04-21 下午1.58.54.png 20150625181147536.png屏幕快照 2017-04-21 下午2.00.26.png说明:Core OS和Core Service提供了底层支持,包括文件访问、网络协议、低级数据类型等。Media提供了基本绘图和音视频的支持,包括OpenGL、Quartz、Core Audio和Core Animation等。Cocoa Touch包括了开发使用的大部分API,主要由Foundation(文件访问、网络操作、数据和容器类型)和UIKit(UI控件、控制器等)两个部分构成。在进行App开发时,应该由上到下使用这些技术层次,越上层的API封装得越好,开发越方便,但能自己发挥的东西越少。
UIKit继承结构: 20150625180421434.jpeg
739863-8d637d15e234f3ec.jpg
实现App开发中的用户界面首先要从UIResponder及其子类开始研究,当然整个过程会覆盖整个UIKit框架,比如UIColor(颜色)、UIEvent(事件)、UIFont(字体)、UIGestureRecognizer(手势识别)、UIImage(图像)、UIScreen(屏幕)等诸多内容
2.iOS开发入门
屏幕快照 2017-04-21 下午2.01.45.png熟悉Xcode: 20150701190639241.png 屏幕快照 2017-04-21 下午2.02.35.png
Xcode常用功能和快捷键: 屏幕快照 2017-04-21 下午2.03.12.png
3.第一个iOS应用
屏幕快照 2017-04-21 下午2.03.38.png#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
说明:UIApplicationMain方法的四个参数,其中前两个是main方法的命令行参数,第三个参数表是UIApplication类或其子类的名字,UIApplication对象会启动一个事件监听的循环监听各种事件,然后通过委托的方式处理这些事件,而第四个参数正好是一个应用程序委托类的名字。
AppDelegate类的代码如下所示:
头文件
#import <UIKit/UIKit.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
源文件
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 应用程序加载完成
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
// 应用即将置于后台
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
// 应用已经置于后台
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
// 应用即将置于前台
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// 应用已经进入前台
}
- (void)applicationWillTerminate:(UIApplication *)application {
// 应用即将终止
}
@end
也就是说,我们整个应用程序的执行流程和生命周期应该是下面这组图所示的情况。
**应用程序加载到前台: **
**应用程序加载到后台: **
20150704004649569.png**应用程序从前台进入后台: **
20150704003643254.png**应用程序从后台进入前台: **
20150704003711205.png补充:iOS应用程序的生命周期( http://www.jianshu.com/p/aa50e5350852 )
4.iOS坐标体系
屏幕左上角是坐标原点,横向是X轴的正向,纵向是Y轴的正向,状态栏从Y=0到Y=20处
20150701185857901.png 屏幕快照 2017-04-21 下午2.11.25.png- 窗体的作用:
20150701191026285.pngUIWindow相当于一个画框。它能够承载其他的视图对象(包括视图的子类对象),但通常情况下我们不会将所有的视图对象直接放在应用的窗口上,而是由一个或多个视图控制器对象(稍后介绍)来管理这些内容
- UIView和UIWindow:
1.UIWindow呈现的原理
我们可以在刚才的AppDelegate.m文件中加入下面的代码:
// 应用程序加载完成时回调此方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建窗口对象并设置其大小为屏幕大小
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 设置窗口的背景色
self.window.backgroundColor = [UIColor whiteColor];
// 设置窗口对象为主窗口并且可见
[self.window makeKeyAndVisible];
return YES;
}
2.UIWindow和UIView的继承关系
屏幕快照 2017-04-21 下午2.16.44.png 20150701191352170.png 屏幕快照 2017-04-21 下午2.18.02.png2.iOS语法糖
https://www.jianshu.com/p/3f7b3c2d9ef3
3.其他相关
Objective-C Associated Objects 的实现原理:
http://blog.leichunfeng.com/blog/2015/06/26/objective-c-associated-objects-implementation-principle/
网友评论