===================编程
iOS概述 安全
===================网络
1.1.1 什么是iOS架构
iOS是由苹果公司开发的移动操做系统。苹果最先于2007年1月9日的Macworld大会上公布这个系统,本来这个系统名为iPhone OS,由于iPad,iPhone,iPod touch都使用iPhone OS,因此2010WWDC大会上宣布更名为iOS。app
【问】什么是UI?框架
【答】UI全程User Interface(用户接口)经过UI咱们和程序进行交互,传入咱们的请求,反馈运行的结果。若是仅限于iOS程序,看得见摸得着的都是UI函数
推荐的书:《UIKit框架详解》工具
几个相关术语: 测试
- UI: User Interface (用户界面/接口) 字体
- App: Application (应用程序)
- API:Application Programming Interface (应用程序编程接口)
1.1.2 iOS的发展史
2007年10 iPhone应用程序开发包SDK发布
2008年3月 iPhone runs OS X更名iPhone OS
2009年3月 iOS 3发布
2010年6月 iOS 4发布
2011年6月 iOS 5发布
2012年6月 iOS 6发布
2013年6月 iOS 7发布
2014年6月 iOS 8发布
2015年9月 iOS 9发布
1.1.3 CocoaTouch中经常使用的framework
iOS系统架构能够分为以下图所示的4层,CocoaTouch框架的地位不言而喻。
说明:
CocoaTouch Layer(可触摸层):该框架基于iOS应用层直接调用层,如触摸事件、照相管理等,该层包含UIKit框架和Foundation框架。
Media Layer(媒体层):该层框架和服务依赖Core Services层,向CocoaTouch层提供画图和多媒体服务,如声音、图片、视频等。
Core Services Layer(核心服务层): 提供核心服务,例如字符串处理函数、集合管理、网络管理、URL处理工具、联系人维护、偏好设置等。
Core OS Layer(核心操做系统层):包含核心部分、文件系统、网络基础、安全特性、能量管理和一些设备驱动,还有一些系统级别的API。
在CocoaTouch层中不少技术都是基于Objective-C语言的。Objective-C语言为iOS提供了像集合、文件管理、网络操做等支持。像UIKit框架,它为应用程序提供了各类可视化组件,好比像窗口(Window)、视图(View)和按钮组件(UIButton)。Cocoa Touch层中的其余框架,对咱们在应用程序中的开发来讲也是很是有用的,如访问用户通讯录功能框架、获取照片信息功能的框架、负责加速感应器和三维陀螺仪等硬件支持的框架。
UIKit继承结构
实现App开发中的用户界面首先要从UIResponder及其子类开始研究,固然整个过程会覆盖整个UIKit框架,好比UIColor(颜色)、UIEvent(事件)、UIFont(字体)、UIGestureRecognizer(手势识别)、UIImage(图像)、UIScreen(屏幕)等诸多内容。
===================
iOS开发入门
===================
1.2.1 Xcode如何创建第一个UI项目
启动Xcode在欢迎页中选择"Create a new Xcode project"。在项目建立向导中选择iOS->Application->Single View Application而后点击下一步。接下来须要设置项目名称、组织名称、组织标识、开发语言(OC或Swift)和设备(iPhone、iPad或Universal)。下一步以后选择项目的位置就能够点击"Create"完成项目建立了。
Product Name :项目名称
Organization Name : 组织名
Organization Identifier: 组织标识
Bundle Identifier :
Language : 开发语言
Devices : 设备
熟悉Xcode
XCode的上方是工具栏,有不少工具按钮。
Xcode的左侧是导航区域,包括:
项目导航 Command+1 包含项目全部的文件
符号导航 Command+2 集中了全部的工做区中定义的符号
搜索导航 Command+3 对工做区中的全部文件执行搜索
问题导航 Command+4 构建项目过程当中出现的任何错误和警告都会在这里出现
测试导航 Command+5 测试程序导航
调试导航 Command+6 进入调试过程的主视图
断点导航 Command+7 查看设置的全部断点
日志导航 Command+8 保留开发人员最近的构建结果和运行日志的历史记录
1.2.2 为何要使用空模板
选择应用的类型实际上是选择一个项目模板,让Xcode帮你完成一些繁琐的工做,若是使用Xcode 5,咱们建议初学者选择Empty Application,从零开始作一个项目更有助于咱们理解代码的工做原理,真正作开发的时候能够选择写代码或者使用可视化的设计器(storyboard或xib),看你所在的公司有怎样的要求。
1.2.3 项目的目录结构介绍
NewHelloWorld 包含编写的大部分代码以及组成应用程序界面的文件
Supporting Files 包含所须要的非oc类的源代码文件和资源文件
Frameworks 特殊的库,也包含图像和声音文件等资源
Products 包含项目构件时所生成的应用程序
文件模板库(file template library)--包含一些文件模板。
代码片断库(code snippet library)--包含一些代码片断。
对象库(object library)--包含各类可重用对象。
媒体库(media library)--包括用户全部的媒体文件。
1.2.4 Xcode中经常使用的快捷键的使用
Xcode
CMD+R 运行
CMD+B 组建(编译+链接)
CMD+. 中止程序
CMD+鼠标左键 (点进去)
CMD+下 文件尾
CMD+上 文件头
CTRL+CMD+上 切换头文件和实现文件
CMD+/ 注释代码
CMD+A全选
CTRL+I 代码格式化(自动缩进)
CMD+[ 左缩进
CMD+] 右缩进
CMD+N 新建文件
CMD+SHIFT+N 新建项目
模拟器
SHIFT+CMD+H 回到桌面
CMD+1/2/3 调整大小
CMD+左右方向 调整模拟器的方向
CMD+H 隐藏模拟器
CMD+Q 退出模拟器
CMD+S 模拟器截屏(都在桌面上)
屏幕截图
CMD+SHIFT+3 全屏截图(都在桌面上)
CMD+SHIFT+4 区域截图(都在桌面上)
===================
第一个iOS项目
===================
1.3.1 讲解应用程序的生命周期函数
能够在项目导航中看到整个项目包含的文件,打开Supporting Files文件夹能够看到一个main.m文件,里面有你们很是熟悉的main函数。C和Objective-C(之后简称OC)程序的入口都是main函数,iOS应用的入口固然也是main函数,只不过main函数风骚的打了酱油,仅仅去调用了一个叫作UIApplicationMain的函数。UIApplicationMain函数会建立一个UIApplication的对象。每一个iOS应用都有且仅有一个UIApplication对象,该对象的做用是维护一个消息循环,监听应用程序的各类事件并执行相应地回调方法(callback method)。回调是一种常见的编程模式,当咱们知道一件事情发生的时候要作什么,可是并不知道这件事情何时会发生就会用到回调的编程模式,注册一系列的回调方法,当事件发生时经过委托的对象调用这些方法。
#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
1.3.2 简单介绍如何从main函数跳转到AppDelegate
1.3.3 详细介绍iOS的坐标体系
屏幕左上角是坐标原点,横向是X轴的正向,纵向是Y轴的正向,状态栏从Y=0到Y=20处。
屏幕尺寸以下表所示:
设备 |
屏幕尺寸 |
分辨率 |
坐标点 |
iPhone 3和3s |
3.5英寸 |
320*480 |
320*480 |
iPhone 4和4s(支持Retina) |
3.5英寸 |
640*960 |
320*480 |
iPhone 5和5s(支持Retina) |
4英寸 |
640*1136 |
320*568 |
iPhone 6 |
4.7英寸 |
750*1334 |
375*667 |
iPhone 6 Plus |
5.5英寸 |
1080*1920 |
414*736 |
iPad 1和2(不支持Retina) |
9.7 |
768*1024 |
768*1024 |
iPad 3和4(支持Retina) |
9.7 |
1536*2048 |
768*1024 |
iPad Air |
9.7 |
1536*2048 |
768*1024 |
iPad Mini(不支持Retina) |
7.9 |
768*1024 |
768*1024 |
iPad Mini2(支持Retina) |
7.9 |
1536*2048 |
768*1024 |
1.3.4 窗体的做用
UIWindow至关于一个画框。它可以承载其余的视图对象(包括视图的子类对象),但一般状况下咱们不会将全部的视图对象直接放在应用的窗口上,而是由一个或多个视图控制器对象(稍后介绍)来管理这些内容。
==============================
UIView和UIWindow(案例-FirstApp)
==============================
1.一个应用程序(App)只有一个UIWindow的对象window
2.window必须得设置一个根视图控制器(主显示页面)
3.每个试图控制器UIViewController都自带一个UIView
4.把某一个UIViewController设置成根视图控制器
注意!!!!
Xcode6之前的版本,能够直接把控件放到window上,可是
Xcdoe7之后完蛋了!必须window设置根视图控制器,把控件放到根视图控制器的UIView上
1.4.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;
}
1.4.2 UIWindow和UIView的继承关系
貌似UIWindow是UIView的父类,按说,应该是先有窗口,再有视图,果然如此吗?
事实上,UIView是UIWindow的父类,有Apple的官方文档为证。以下图:
UIWindow继承自UIView,关于这一点可能有点逻辑障碍,画框怎么继承自画布呢?
视图怎么能继承窗口呢?虽然说UIWindow继承UIView,但这个UIWindow也是一个重中之重的View。UIWindow虽然说是个View,但它是首席View。
UIView定义了一个矩形区域以及操做这个矩形区域中内容的编程接口,除此以外UIView还要处理运行时区域中内容的交互行为(绘图、动画和事件处理)。从上面的图中咱们也能够看出,咱们要使用的控件都是UIView的子类型。视图会按层次结构排列,位于视图层次结构顶端的就是应用窗体。
任何应用都有且仅有一个UIWindow对象,UIWindow对象就像一个容器,负责包含应用中的全部视图。应用须要在启动时建立并设置UIWindow对象,而后为其添加其余的视图,就像上面的代码呈现的那样。
加入窗口的视图会成为该窗口的子视图。子视图也能够有本身的子视图从而构成一个以UIWindow做为根的视图层次结构(树形结构)。
1.4.3 UIView的基本属性和方法
=================================
UILabel详解
=================================
1.5.1 UILabel的使用场景
UILabel是一个视图类,即UIView的子类,在iOS程序中,看的见,摸得着的,都是UIView的子类。UILabel是标签视图,用于显示文字信息
1.5.2 UILabel的经常使用属性和经常使用方法
//访问文本属性
text
font
textColor
textAlignment
lineBreakMode
enable
//对标签文本的大小
adjuestsFontSizeToFitWidth
baselineAdjustment
minimumFontSize
numberOfLines
//管理高亮值
highlightedTextColor
highlighted
//画阴影
shadowColor
shadowOffset
//图和定位覆盖
-textRectForBounds:limitedToNumberOfLines:
-drawTextInRect:
//设置和获取属性
userInteractionEnabled
tag
=================================
扩展
=================================
1.UIApplication和UIApplicationDelegate的关系
1.UIApplication是程序的起始点,负责初始化和显示UIWindow
2.负责加载应用程序的第一个UIView到UIWindow中
3.帮助管理应用程序的生命周期
4.截收到的事件,转给委托UIApplicationDelegate来处理,此委托能够
处理的事件包括:应用程序的生命周期、事件如程序启动和关闭、系统事件如来电等。