《iOS核心開發手冊(原書第5版)》是2016年4月由機械工業出版社出版的一本圖書作者是[美] Erica Sadun,Rich Wardwell ,譯者是愛飛翔 。
基本介紹
- 書名:iOS核心開發手冊(原書第5版)
- ISBN:9787111491859
- 出版時間:2013年4月1日
內容簡介,作者簡介,圖書目錄,
內容簡介
《iOS核心開發手冊(原書第5版)》由著名iOS編程專家、頂端iOS開發大師聯合撰寫,是市面上最暢銷的iOS開發圖書的全新升級版本。書中用豐富的實例、直觀的代碼展示創建優秀iOS程式所需的全部技巧,幫助讀者輕鬆掌握並高效開發iOS程式。
《iOS核心開發手冊(原書第5版)》共分15章:第1章講解iOS程式中的手勢與觸摸,包括直接操縱界面、多點觸摸和創建自定義的手勢識別器;第2章深入講解如何操控應用程式;第3章介紹如何在應用程式中實現信息通知;第4章講解如何編排視圖及其動畫效果;第5章介紹如何用代碼來做視圖方面的約束;第6章講解如何控制鍵盤、使螢幕上面的控制項支持文本輸入、掃描文本、格式化文本等;第7章介紹各種視圖控制器類的用法;第8章講解常用的控制器,包括從照片庫中選取照片、拍照、錄製並編輯視頻等;第9章介紹表格的用法,解釋表格的工作原理,講解可供開發者使用的各種表格,並且告訴你如何在程式中利用表格的各種特性;第10章講述使用Collection 視圖所需的各種基礎知識,包括如何創建可以橫向滾動的列表,如何創建格線布局,如何創建“圓形”等特殊方式的布局;第11章講解如何在應用程式之間分享文檔及數據;第12章淺談Core Data,你會學到如何設計受託管的資料庫存儲區,如何添加並刪除數據,如何用代碼查詢數據,以及如何把這些操作同UIKit中的Table 視圖及Collection 視圖相集成;第13章介紹網路編程中的常用技術,同時也提供一些解決方案,用來簡化日常的網路開發任務;第14章講解針對特定設備的開發,包括如何查看設備的硬體規格以及可供使用的感應器等;第15章簡單介紹VoiceOver這項輔助功能,開發者可以通過該功能儘量擴大應用程式的客群。
作者簡介
Erica Sadun,是數十本暢銷書的作者、合著者和供稿者,這些書涉及程式設計、數字視頻、數字攝影、Web設計和其他技術主題。作為一名在iOS領域最負盛名的開發人員,她還開發了數十種iPhone自帶的套用。Sadun擁有喬治亞理工學院計算機科學專業的博士學位。
Rich Wardwell,是Black Pixel的資深iOS及Mac開發者,在專業級伺服器、桌面和移動領域有20多年軟體開發經驗,並以主要開發者的身份參與製作了很多款Apple App Store上的優秀iOS應用程式,包括USA Today及Fox News。。
愛飛翔,資深軟體開發工程師,擅長Web開發、移動開發和遊戲開發,有10餘年開發經驗,曾主導和參與了多個手機遊戲和手機軟體項目的開發,經驗十分豐富。業餘愛好文學和歷史,有一定的文學造詣。翻譯並出版了《Android遊戲開發實踐指南》、《測試驅動的iOS開發》、《HTML5 Canvas核心技術:圖形、動畫與遊戲開發》、《NoSQL精粹》和《JavaScript套用開發實踐指南》等書。
圖書目錄
譯者序
前 言
致 謝
第1章 手勢與觸摸 1
1.1 觸摸 1
1.1.1 觸摸操作所處的階段 2
1.1.2 UIResponder類中的觸摸事件回響方法 3
1.1.3 對視圖的觸摸 4
1.1.4 多點觸摸 4
1.1.5 手勢識別器 5
1.2 解決方案:添加簡單的直接操縱界面 5
1.3 解決方案:添加拖動手勢識別器 7
1.4 解決方案:同時使用多個手勢識別器 9
1.5 解決方案:限制移動 14
1.6 解決方案:測試觸摸 15
1.7 解決方案:針對點陣圖的觸摸測試 17
1.8 解決方案:根據觸摸情況在螢幕上繪製內容 19
1.9 解決方案:令繪製效果變得平滑 21
1.10 解決方案:啟用多點觸摸 24
1.11 解決方案:檢測圓圈手勢 27
1.12 解決方案:創建自定義手勢識別器 32
1.13 解決方案:把滾動視圖中的內容拖曳到外面 34
1.14 解決方案:實時的觸摸反饋 37
1.14.1 啟用觸摸反饋效果 38
1.14.2 攔截並轉發觸摸事件 38
1.14.3 實現TOUCHkit的TOUCHkitView類 40
1.15 解決方案:向視圖中添加選單 42
1.16 小結 43
第2章 構建並使用控制項 45
2.1 UIControl類 45
2.1.1 目標-動作模式 46
2.1.2 控制項的種類 46
2.1.3 控制項事件 46
2.2 按鈕 48
2.3 Interface Builder中的按鈕 50
2.4 解決方案:構建按鈕 51
2.4.1 多行按鈕文本 54
2.4.2 為按鈕添加動畫元件 54
2.4.3 為按鈕添加額外狀態 55
2.5 解決方案:使按鈕以動畫效果來回響用戶 55
2.6 解決方案:為滑桿控制項添加自定義的滑塊 57
2.6.1 定製UISlider控制項 57
2.6.2 添加最佳化代碼 58
2.7 解決方案:創建可以連續點擊兩次的分段選擇控制項 61
2.7.1 實現第二次點擊時的反饋效果 62
2.7.2 控制項及帶屬性的字元串 63
2.8 開關控制項與步進控制項 64
2.9 解決方案:編寫UIControl的子類 65
2.9.1 創建控制項 68
2.9.2 追蹤觸摸事件 68
2.9.3 派發控制項事件 69
2.10 解決方案:構建評分所用的Star Slider控制項 69
2.11 解決方案:構建觸摸轉盤控制項 72
2.12 解決方案:創建拉曳控制項 75
2.12.1 為控制項添加提示效果 75
2.12.2 測試觸摸 77
2.13 解決方案:構建自定義的鎖定控制項 80
2.14 解決方案:圖片庫查看器 83
2.15 構建工具列 85
2.16 小結 88
第3章 提醒用戶 89
3.1 直接向用戶彈出警告視圖 89
3.1.1 構建簡單的警告視圖 89
3.1.2 設定UIAlertView的委託 91
3.1.3 顯示UIAlertView 92
3.1.4 各種UIAlertView 92
3.2 解決方案:構建支持塊的警告視圖 93
3.2.1 塊簡介 93
3.2.2 使用塊時避免保留循環 95
3.3 解決方案:將變長參數列表與UIAlertView結合起來使用 98
3.4 展示選項列表 99
3.4.1 滾動選單 101
3.4.2 在動作表中顯示文本 101
3.5 將操作進度告知用戶並提示其稍等片刻 102
3.5.1 使用UIActivity-IndicatorView 103
3.5.2 使用UIProgressView 103
3.6 解決方案:在螢幕上繪製模態的進度指示器 104
3.7 解決方案:自製的模態警告視圖 106
3.8 解決方案:基本的popover 110
3.9 解決方案:本機通知 111
3.10 用網路活動指示器提醒用戶 113
3.11 解決方案:播放簡單的提示音 114
3.11.1 System Sound 114
3.11.2 為使用系統框架而引入模組 115
3.11.3 震動 115
3.11.4 警示音 116
3.11.5 延遲 117
3.11.6 釋放系統音 117
3.12 小結 117
第4章 編排視圖及其動畫效果 119
4.1 視圖層級 119
4.2 解決方案:用樹狀圖來描述視圖層級 121
4.3 解決方案:查詢子視圖 123
4.4 管理子視圖 125
4.4.1 添加子視圖 125
4.4.2 重排及刪除子視圖 125
4.4.3 UIView的回調方法 125
4.5 為視圖設定標籤並查找視圖 126
4.6 解決方案:通過對象關在線上制為視圖設定名稱 127
4.7 視圖的幾何特徵 129
4.7.1 框架 130
4.7.2 與CGRect有關的工具函式 130
4.7.3 CGPoint與CGSize 131
4.7.4 CGAffineTransform 132
4.7.5 坐標系統 133
4.8 解決方案:操控視圖的框架 133
4.8.1 調整視圖的尺寸 134
4.8.2 CGRect與中心點 136
4.8.3 視圖的其他幾何特徵 137
4.9 解決方案:獲取與坐標變換有關的信息 141
4.9.1 獲取與變換有關的屬性 141
4.9.2 判斷兩個視圖是否相交 142
4.10 與顯示和互動有關的特徵 147
4.11 UIView的動畫效果 148
4.12 解決方案:視圖的淡入與淡出 150
4.13 解決方案:交換兩個視圖的前後順序 151
4.14 解決方案:翻轉視圖 151
4.15 解決方案:採用Core Animation API來製作切換效果 153
4.16 解決方案:使視圖在出現之後回彈 155
4.17 解決方案:關鍵幀動畫 156
4.18 解決方案:UIImageView的動畫效果 157
4.19 小結 158
第5章 視圖的約束系統 160
5.1 什麼是約束 161
5.2 約束系統所用的屬性 161
5.3 約束系統的運作規律 163
5.4 約束規則與框架屬性 165
5.4.1 固有內容的尺寸 165
5.4.2 對齊矩形 166
5.5 創建約束規則 167
5.5.1 基本約束規則聲明 167
5.5.2 用可視化格式字元串聲明約束規則 168
5.5.3 變數綁定 169
5.6 格式字元串 169
5.6.1 方向 169
5.6.2 連線 171
5.7 謂詞 173
5.7.1 指標 173
5.7.2 描述兩個視圖關係的謂詞 174
5.7.3 優先權 174
5.8 格式字元串總結 174
5.9 用格式字元串將視圖對齊並靈活調整其尺寸 176
5.10 處理約束規則的流程 176
5.11 管理約束規則 177
5.12 解決方案:實現約束規則之間的對比 178
5.13 解決方案:創建尺寸固定且受規則約束的視圖 181
5.13.1 禁用translatesAutoresizing-MaskIntoConstraints 181
5.13.2 令視圖出現在上級視圖範圍內 182
5.13.3 限定視圖的尺寸 183
5.13.4 把前面各節內容拼裝起來 183
5.14 解決方案:將兩個視圖居中對齊 185
5.15 解決方案:設定寬高比 186
5.16 解決方案:回響螢幕方向的變更 188
5.17 調試約束規則 190
5.18 解決方案:描述約束規則 191
5.19 用宏來創建約束規則 194
5.20 小結 197
第6章 文本輸入 198
6.1 解決方案:隱藏UITextField的鍵盤 199
6.1.1 阻止系統把鍵盤隱藏起來 200
6.1.2 UITextInputTraits協定中的屬性 200
6.1.3 文本框的其他屬性 201
6.2 解決方案:把帶有自定義輔助視圖的鍵盤隱藏起來 203
6.3 解決方案:根據鍵盤來調整文本視圖 205
6.4 解決方案:創建自定義的輸入視圖 209
6.5 解決方案:使視圖具備文本輸入功能 213
6.6 解決方案:為非文本視圖添加自定義的輸入視圖 216
6.7 解決方案:創建更好的文本編輯器(第一部分) 218
6.8 解決方案:創建更好的文本編輯器(第二部分) 221
6.8.1 啟用Attributed Text 221
6.8.2 控制文本的樣式 221
6.8.3 可供UIResponder使用的其他功能 223
6.9 解決方案:過濾用戶所輸入的文本 224
6.10 解決方案:檢測文本模式 226
6.10.1 構建自己的正則表達式 227
6.10.2 枚舉正則表達式 227
6.10.3 數據探測器 228
6.10.4 使用內置類型的探測器 229
6.10.5 有用的網站 229
6.11 解決方案:檢測UITextView中的拼寫錯誤 231
6.12 搜尋文本中的字元串 232
6.13 小結 233
第7章 使用視圖控制器 234
7.1 視圖控制器 234
7.1.1 UIViewController類 235
7.1.2 導航控制器 235
7.1.3 標籤欄控制器 235
7.1.4 分欄視圖控制器 236
7.1.5 頁面視圖控制器 236
7.1.6 popover控制器 236
7.2 使用導航控制器與分欄視圖控制器來開發程式 237
7.2.1 使用導航控制器與導航棧 238
7.2.2 推入與彈出視圖控制器 239
7.2.3 導航欄上的按鈕 239
7.2.4 延伸至螢幕邊緣的布局形式 240
7.3 解決方案:UINavigationItem類 241
7.3.1 標題與後退按鈕 242
7.3.2 宏 242
7.4 解決方案:模態界面 244
7.5 解決方案:構建分欄視圖控制器 248
7.6 解決方案:用分欄視圖及導航控制器創建通用的程式 253
7.7 解決方案:標籤欄 255
7.8 記住標籤的狀態 259
7.9 解決方案:頁面視圖控制器 262
7.9.1 與書籍展示風格有關的屬性 262
7.9.2 封裝實現細節 263
7.9.3 範例代碼詳解 269
7.9.4 構建界面索引 270
7.10 解決方案:自定義的容器 271
7.10.1 添加與移除子視圖控制器 274
7.10.2 視圖控制器之間的切換效果 275
7.11 解決方案:segue 276
7.12 小結 282
第8章 常用的控制器 284
8.1 圖像選取器控制器 284
8.1.1 圖像來源 284
8.1.2 在iPhone和iPad中顯示選取器 285
8.2 解決方案:選取圖像 286
8.2.1 向模擬器中添加圖片 286
8.2.2 AssetsLibrary模組 286
8.2.3 展示選取器 287
8.2.4 處理delegate的回調 288
8.3 解決方案:拍攝照片 293
8.3.1 配置選取器 293
8.3.2 顯示圖像 295
8.3.3 把圖像保存到相冊 295
8.4 解決方案:錄製視頻 297
8.4.1 創建錄製視頻用的選取器 298
8.4.2 保存視頻 299
8.5 解決方案:用媒體播放器播放視頻 299
8.6 解決方案:編輯視頻 302
8.7 解決方案:選取並編輯視頻 304
8.8 解決方案:通過電子郵件傳送圖片 306
8.9 解決方案:傳送文本訊息 309
8.10 解決方案:在社交網站發布訊息 311
8.11 小結 313
第9章 創建並管理表格視圖 314
9.1 iOS的表格 314
9.2 委託 315
9.3 創建表格 316
9.3.1 表格的樣式 316
9.3.2 排布表格視圖 316
9.3.3 設定數據源 317
9.3.4 提供單元格 317
9.3.5 註冊單元格類 317
9.3.6 從佇列中取出單元格 318
9.3.7 設定delegate 318
9.4 解決方案:實現簡單的表格 319
9.4.1 數據源方法 319
9.4.2 回響用戶的觸摸 322
9.5 UITableViewCell類 322
9.5.1 單元格的selectionStyle屬性 323
9.5.2 添加自定義的單元格受選效果 323
9.6 解決方案:創建帶有選取標記的單元格 323
9.7 給單元格添加詳情展示控制項 325
9.8 解決方案:編輯表格 327
9.8.1 添加撤銷功能 331
9.8.2 實現撤銷功能 332
9.8.3 顯示移除單元格所用的控制項 332
9.8.4 處理刪除請求 332
9.8.5 通過滑動手勢刪除單元格 333
9.8.6 調整單元格的順序 333
9.8.7 添加單元格 333
9.9 解決方案:操控表格的區段 334
9.9.1 構建區段 334
9.9.2 區段數量與區段內的行數 335
9.9.3 返回單元格 335
9.9.4 創建每個區段的頭部標題 337
9.9.5 定製表格與區段的頭部及尾部 338
9.9.6 創建區段索引 338
9.9.7 處理索引與區段不匹配的問題 339
9.9.8 為分區表格實現委託方法 339
9.10 解決方案:在表格中搜尋 339
9.10.1 創建搜尋顯示控制器 341
9.10.2 為搜尋顯示控制器註冊單元格 341
9.10.3 構建支持搜尋功能的數據源方法 342
9.10.4 委託方法 343
9.10.5 使用與搜尋功能相配套的索引 344
9.11 解決方案:給表格添加下拉刷新功能 345
9.12 解決方案:添加指令行 348
9.13 製作自定義的分組表格 351
9.14 解決方案:構建含有多個滾輪的表格 352
9.14.1 創建UIPickerView 353
9.14.2 數據源方法與委託方法 353
9.14.3 使用帶有選取器的視圖 354
9.15 使用UIDatePicker 356
9.16 小結 357
第10章 集合視圖 358
10.1 集合視圖與表格的異同 358
10.2 建立集合視圖 360
10.2.1 通過控制器使用集合視圖 361
10.2.2 直接使用集合視圖 361
10.2.3 數據源與委託 362
10.3 流式布局 362
10.3.1 滾動方向 362
10.3.2 條目的尺寸以及行間距 362
10.3.3 頭部與尾部的尺寸 364
10.3.4 內邊距 365
10.4 解決方案:採用流式布局的簡單集合視圖 366
10.5 解決方案:自定義單元格 370
10.6 解決方案:水平滾動的列表 372
10.7 解決方案:創建互動式的布局效果 375
10.8 解決方案:滾動之後自動調整位置 377
10.9 解決方案:創建圓形布局 378
10.9.1 實現創建條目與刪除條目時的動畫效果 381
10.9.2 增強圓形布局的實用性 382
10.9.3 布局對象 383
10.10 解決方案:用手勢調整布局 383
10.11 解決方案:創建真正的格線狀布局 385
10.12 解決方案:為集合視圖中的條目添加自定義選單 391
10.13 小結 393
第11章 分享文檔與數據 394
11.1 解決方案:使用統一類型標識符 394
11.2 解決方案:訪問系統剪貼簿 400
11.3 解決方案:監控Documents資料夾 403
11.4 解決方案:活動視圖控制器 408
11.5 解決方案:Quick Look預覽控制器 417
11.6 解決方案:使用文檔互動控制器 420
11.7 解決方案:聲明程式所支持的文檔類型 426
11.8 解決方案:創建基於URL的服務 431
11.9 小結 434
第12章 淺談Core Data 435
第13章 網路編程基礎 462
第14章 針對特定設備的開發 493
第15章 輔助功能 524
附錄A Objective-C字面量 536
前 言
致 謝
第1章 手勢與觸摸 1
1.1 觸摸 1
1.1.1 觸摸操作所處的階段 2
1.1.2 UIResponder類中的觸摸事件回響方法 3
1.1.3 對視圖的觸摸 4
1.1.4 多點觸摸 4
1.1.5 手勢識別器 5
1.2 解決方案:添加簡單的直接操縱界面 5
1.3 解決方案:添加拖動手勢識別器 7
1.4 解決方案:同時使用多個手勢識別器 9
1.5 解決方案:限制移動 14
1.6 解決方案:測試觸摸 15
1.7 解決方案:針對點陣圖的觸摸測試 17
1.8 解決方案:根據觸摸情況在螢幕上繪製內容 19
1.9 解決方案:令繪製效果變得平滑 21
1.10 解決方案:啟用多點觸摸 24
1.11 解決方案:檢測圓圈手勢 27
1.12 解決方案:創建自定義手勢識別器 32
1.13 解決方案:把滾動視圖中的內容拖曳到外面 34
1.14 解決方案:實時的觸摸反饋 37
1.14.1 啟用觸摸反饋效果 38
1.14.2 攔截並轉發觸摸事件 38
1.14.3 實現TOUCHkit的TOUCHkitView類 40
1.15 解決方案:向視圖中添加選單 42
1.16 小結 43
第2章 構建並使用控制項 45
2.1 UIControl類 45
2.1.1 目標-動作模式 46
2.1.2 控制項的種類 46
2.1.3 控制項事件 46
2.2 按鈕 48
2.3 Interface Builder中的按鈕 50
2.4 解決方案:構建按鈕 51
2.4.1 多行按鈕文本 54
2.4.2 為按鈕添加動畫元件 54
2.4.3 為按鈕添加額外狀態 55
2.5 解決方案:使按鈕以動畫效果來回響用戶 55
2.6 解決方案:為滑桿控制項添加自定義的滑塊 57
2.6.1 定製UISlider控制項 57
2.6.2 添加最佳化代碼 58
2.7 解決方案:創建可以連續點擊兩次的分段選擇控制項 61
2.7.1 實現第二次點擊時的反饋效果 62
2.7.2 控制項及帶屬性的字元串 63
2.8 開關控制項與步進控制項 64
2.9 解決方案:編寫UIControl的子類 65
2.9.1 創建控制項 68
2.9.2 追蹤觸摸事件 68
2.9.3 派發控制項事件 69
2.10 解決方案:構建評分所用的Star Slider控制項 69
2.11 解決方案:構建觸摸轉盤控制項 72
2.12 解決方案:創建拉曳控制項 75
2.12.1 為控制項添加提示效果 75
2.12.2 測試觸摸 77
2.13 解決方案:構建自定義的鎖定控制項 80
2.14 解決方案:圖片庫查看器 83
2.15 構建工具列 85
2.16 小結 88
第3章 提醒用戶 89
3.1 直接向用戶彈出警告視圖 89
3.1.1 構建簡單的警告視圖 89
3.1.2 設定UIAlertView的委託 91
3.1.3 顯示UIAlertView 92
3.1.4 各種UIAlertView 92
3.2 解決方案:構建支持塊的警告視圖 93
3.2.1 塊簡介 93
3.2.2 使用塊時避免保留循環 95
3.3 解決方案:將變長參數列表與UIAlertView結合起來使用 98
3.4 展示選項列表 99
3.4.1 滾動選單 101
3.4.2 在動作表中顯示文本 101
3.5 將操作進度告知用戶並提示其稍等片刻 102
3.5.1 使用UIActivity-IndicatorView 103
3.5.2 使用UIProgressView 103
3.6 解決方案:在螢幕上繪製模態的進度指示器 104
3.7 解決方案:自製的模態警告視圖 106
3.8 解決方案:基本的popover 110
3.9 解決方案:本機通知 111
3.10 用網路活動指示器提醒用戶 113
3.11 解決方案:播放簡單的提示音 114
3.11.1 System Sound 114
3.11.2 為使用系統框架而引入模組 115
3.11.3 震動 115
3.11.4 警示音 116
3.11.5 延遲 117
3.11.6 釋放系統音 117
3.12 小結 117
第4章 編排視圖及其動畫效果 119
4.1 視圖層級 119
4.2 解決方案:用樹狀圖來描述視圖層級 121
4.3 解決方案:查詢子視圖 123
4.4 管理子視圖 125
4.4.1 添加子視圖 125
4.4.2 重排及刪除子視圖 125
4.4.3 UIView的回調方法 125
4.5 為視圖設定標籤並查找視圖 126
4.6 解決方案:通過對象關在線上制為視圖設定名稱 127
4.7 視圖的幾何特徵 129
4.7.1 框架 130
4.7.2 與CGRect有關的工具函式 130
4.7.3 CGPoint與CGSize 131
4.7.4 CGAffineTransform 132
4.7.5 坐標系統 133
4.8 解決方案:操控視圖的框架 133
4.8.1 調整視圖的尺寸 134
4.8.2 CGRect與中心點 136
4.8.3 視圖的其他幾何特徵 137
4.9 解決方案:獲取與坐標變換有關的信息 141
4.9.1 獲取與變換有關的屬性 141
4.9.2 判斷兩個視圖是否相交 142
4.10 與顯示和互動有關的特徵 147
4.11 UIView的動畫效果 148
4.12 解決方案:視圖的淡入與淡出 150
4.13 解決方案:交換兩個視圖的前後順序 151
4.14 解決方案:翻轉視圖 151
4.15 解決方案:採用Core Animation API來製作切換效果 153
4.16 解決方案:使視圖在出現之後回彈 155
4.17 解決方案:關鍵幀動畫 156
4.18 解決方案:UIImageView的動畫效果 157
4.19 小結 158
第5章 視圖的約束系統 160
5.1 什麼是約束 161
5.2 約束系統所用的屬性 161
5.3 約束系統的運作規律 163
5.4 約束規則與框架屬性 165
5.4.1 固有內容的尺寸 165
5.4.2 對齊矩形 166
5.5 創建約束規則 167
5.5.1 基本約束規則聲明 167
5.5.2 用可視化格式字元串聲明約束規則 168
5.5.3 變數綁定 169
5.6 格式字元串 169
5.6.1 方向 169
5.6.2 連線 171
5.7 謂詞 173
5.7.1 指標 173
5.7.2 描述兩個視圖關係的謂詞 174
5.7.3 優先權 174
5.8 格式字元串總結 174
5.9 用格式字元串將視圖對齊並靈活調整其尺寸 176
5.10 處理約束規則的流程 176
5.11 管理約束規則 177
5.12 解決方案:實現約束規則之間的對比 178
5.13 解決方案:創建尺寸固定且受規則約束的視圖 181
5.13.1 禁用translatesAutoresizing-MaskIntoConstraints 181
5.13.2 令視圖出現在上級視圖範圍內 182
5.13.3 限定視圖的尺寸 183
5.13.4 把前面各節內容拼裝起來 183
5.14 解決方案:將兩個視圖居中對齊 185
5.15 解決方案:設定寬高比 186
5.16 解決方案:回響螢幕方向的變更 188
5.17 調試約束規則 190
5.18 解決方案:描述約束規則 191
5.19 用宏來創建約束規則 194
5.20 小結 197
第6章 文本輸入 198
6.1 解決方案:隱藏UITextField的鍵盤 199
6.1.1 阻止系統把鍵盤隱藏起來 200
6.1.2 UITextInputTraits協定中的屬性 200
6.1.3 文本框的其他屬性 201
6.2 解決方案:把帶有自定義輔助視圖的鍵盤隱藏起來 203
6.3 解決方案:根據鍵盤來調整文本視圖 205
6.4 解決方案:創建自定義的輸入視圖 209
6.5 解決方案:使視圖具備文本輸入功能 213
6.6 解決方案:為非文本視圖添加自定義的輸入視圖 216
6.7 解決方案:創建更好的文本編輯器(第一部分) 218
6.8 解決方案:創建更好的文本編輯器(第二部分) 221
6.8.1 啟用Attributed Text 221
6.8.2 控制文本的樣式 221
6.8.3 可供UIResponder使用的其他功能 223
6.9 解決方案:過濾用戶所輸入的文本 224
6.10 解決方案:檢測文本模式 226
6.10.1 構建自己的正則表達式 227
6.10.2 枚舉正則表達式 227
6.10.3 數據探測器 228
6.10.4 使用內置類型的探測器 229
6.10.5 有用的網站 229
6.11 解決方案:檢測UITextView中的拼寫錯誤 231
6.12 搜尋文本中的字元串 232
6.13 小結 233
第7章 使用視圖控制器 234
7.1 視圖控制器 234
7.1.1 UIViewController類 235
7.1.2 導航控制器 235
7.1.3 標籤欄控制器 235
7.1.4 分欄視圖控制器 236
7.1.5 頁面視圖控制器 236
7.1.6 popover控制器 236
7.2 使用導航控制器與分欄視圖控制器來開發程式 237
7.2.1 使用導航控制器與導航棧 238
7.2.2 推入與彈出視圖控制器 239
7.2.3 導航欄上的按鈕 239
7.2.4 延伸至螢幕邊緣的布局形式 240
7.3 解決方案:UINavigationItem類 241
7.3.1 標題與後退按鈕 242
7.3.2 宏 242
7.4 解決方案:模態界面 244
7.5 解決方案:構建分欄視圖控制器 248
7.6 解決方案:用分欄視圖及導航控制器創建通用的程式 253
7.7 解決方案:標籤欄 255
7.8 記住標籤的狀態 259
7.9 解決方案:頁面視圖控制器 262
7.9.1 與書籍展示風格有關的屬性 262
7.9.2 封裝實現細節 263
7.9.3 範例代碼詳解 269
7.9.4 構建界面索引 270
7.10 解決方案:自定義的容器 271
7.10.1 添加與移除子視圖控制器 274
7.10.2 視圖控制器之間的切換效果 275
7.11 解決方案:segue 276
7.12 小結 282
第8章 常用的控制器 284
8.1 圖像選取器控制器 284
8.1.1 圖像來源 284
8.1.2 在iPhone和iPad中顯示選取器 285
8.2 解決方案:選取圖像 286
8.2.1 向模擬器中添加圖片 286
8.2.2 AssetsLibrary模組 286
8.2.3 展示選取器 287
8.2.4 處理delegate的回調 288
8.3 解決方案:拍攝照片 293
8.3.1 配置選取器 293
8.3.2 顯示圖像 295
8.3.3 把圖像保存到相冊 295
8.4 解決方案:錄製視頻 297
8.4.1 創建錄製視頻用的選取器 298
8.4.2 保存視頻 299
8.5 解決方案:用媒體播放器播放視頻 299
8.6 解決方案:編輯視頻 302
8.7 解決方案:選取並編輯視頻 304
8.8 解決方案:通過電子郵件傳送圖片 306
8.9 解決方案:傳送文本訊息 309
8.10 解決方案:在社交網站發布訊息 311
8.11 小結 313
第9章 創建並管理表格視圖 314
9.1 iOS的表格 314
9.2 委託 315
9.3 創建表格 316
9.3.1 表格的樣式 316
9.3.2 排布表格視圖 316
9.3.3 設定數據源 317
9.3.4 提供單元格 317
9.3.5 註冊單元格類 317
9.3.6 從佇列中取出單元格 318
9.3.7 設定delegate 318
9.4 解決方案:實現簡單的表格 319
9.4.1 數據源方法 319
9.4.2 回響用戶的觸摸 322
9.5 UITableViewCell類 322
9.5.1 單元格的selectionStyle屬性 323
9.5.2 添加自定義的單元格受選效果 323
9.6 解決方案:創建帶有選取標記的單元格 323
9.7 給單元格添加詳情展示控制項 325
9.8 解決方案:編輯表格 327
9.8.1 添加撤銷功能 331
9.8.2 實現撤銷功能 332
9.8.3 顯示移除單元格所用的控制項 332
9.8.4 處理刪除請求 332
9.8.5 通過滑動手勢刪除單元格 333
9.8.6 調整單元格的順序 333
9.8.7 添加單元格 333
9.9 解決方案:操控表格的區段 334
9.9.1 構建區段 334
9.9.2 區段數量與區段內的行數 335
9.9.3 返回單元格 335
9.9.4 創建每個區段的頭部標題 337
9.9.5 定製表格與區段的頭部及尾部 338
9.9.6 創建區段索引 338
9.9.7 處理索引與區段不匹配的問題 339
9.9.8 為分區表格實現委託方法 339
9.10 解決方案:在表格中搜尋 339
9.10.1 創建搜尋顯示控制器 341
9.10.2 為搜尋顯示控制器註冊單元格 341
9.10.3 構建支持搜尋功能的數據源方法 342
9.10.4 委託方法 343
9.10.5 使用與搜尋功能相配套的索引 344
9.11 解決方案:給表格添加下拉刷新功能 345
9.12 解決方案:添加指令行 348
9.13 製作自定義的分組表格 351
9.14 解決方案:構建含有多個滾輪的表格 352
9.14.1 創建UIPickerView 353
9.14.2 數據源方法與委託方法 353
9.14.3 使用帶有選取器的視圖 354
9.15 使用UIDatePicker 356
9.16 小結 357
第10章 集合視圖 358
10.1 集合視圖與表格的異同 358
10.2 建立集合視圖 360
10.2.1 通過控制器使用集合視圖 361
10.2.2 直接使用集合視圖 361
10.2.3 數據源與委託 362
10.3 流式布局 362
10.3.1 滾動方向 362
10.3.2 條目的尺寸以及行間距 362
10.3.3 頭部與尾部的尺寸 364
10.3.4 內邊距 365
10.4 解決方案:採用流式布局的簡單集合視圖 366
10.5 解決方案:自定義單元格 370
10.6 解決方案:水平滾動的列表 372
10.7 解決方案:創建互動式的布局效果 375
10.8 解決方案:滾動之後自動調整位置 377
10.9 解決方案:創建圓形布局 378
10.9.1 實現創建條目與刪除條目時的動畫效果 381
10.9.2 增強圓形布局的實用性 382
10.9.3 布局對象 383
10.10 解決方案:用手勢調整布局 383
10.11 解決方案:創建真正的格線狀布局 385
10.12 解決方案:為集合視圖中的條目添加自定義選單 391
10.13 小結 393
第11章 分享文檔與數據 394
11.1 解決方案:使用統一類型標識符 394
11.2 解決方案:訪問系統剪貼簿 400
11.3 解決方案:監控Documents資料夾 403
11.4 解決方案:活動視圖控制器 408
11.5 解決方案:Quick Look預覽控制器 417
11.6 解決方案:使用文檔互動控制器 420
11.7 解決方案:聲明程式所支持的文檔類型 426
11.8 解決方案:創建基於URL的服務 431
11.9 小結 434
第12章 淺談Core Data 435
第13章 網路編程基礎 462
第14章 針對特定設備的開發 493
第15章 輔助功能 524
附錄A Objective-C字面量 536