===================編程
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來處理,此委託能夠
處理的事件包括:應用程序的生命週期、事件如程序啓動和關閉、系統事件如來電等。