讓你快速瞭解並掌握如何進行iOS開發技能,掌握ios開發技能
首先你要花點時間針對objective-c語言的學習;畢竟這個是iOS開發的基礎(你也可以嘗試用Swift,但此項目只是針對OC),編程套路其實都是差不多,多寫多想多實踐;關於環境的搭建就不在本文進行介紹,這部分內容可以自行百度或Google,都有相應的說明;
對於一個剛入門總是希望有個完整的項目可以直接運行,並且從中學習功能模組如何開發;本項目初識就是為了把常見的功能模組進行一個展現,裡面還包含一些基礎知識的介紹;如果可以大概看完項目中的代碼,對於編寫一個iOS項目應該是沒有問題;項目中也把常用到的代碼進行整理,希望對你有協助;
效果展現:
一:整體項目搭建
項目中對於代碼的架構跟分層還是比較明確,可以滿足大部分中小型的項目,採用也是傳統的MVC模式,對於模組、資源、助手、分類、宏定義檔案等都有相應的位置進行存放;當然對於項目的分層還是基於項目的要求,及個人的喜好;項目還定義宏進行區分不同的環境,可以根據要求再增加不同環境;
二:常見助手代碼
項目中對於一些常見的功能代碼已經進行封裝,都可以運用在真實的項目中,達到簡化項目開化的目的,各個助手就沒進行一一介紹;可以自行下載原始碼進行查看;
三:基礎知識點
1:viewController生命週期
2:運行時RunTime知識運用 裡麵包括RunTime一些常見的執行個體,部分有簡單的介紹
3:多線程知識運用 包含NSThread多線程、GCD多線程、NSOperation多線程、同步鎖知識各種執行個體實現
4:Protocol實作類別 如何簡單實現解耦
5:Block記憶體釋放知識點 常見的記憶體處理問題 包含block迴圈、對象釋放等
6:TableViewDataSource提取
7:CADisplayLink知識運用
8:CAShapeLayer與UIBezierPath知識運用
9:CGContext知識點運用
此模組是關於iOS一些常見知識點的總結,每個基礎點都有相應的執行個體跟代碼註解介紹,特別是關於runtime知識點、多線程、動作等內容;在平常開發過程中還是比較常見;會比入門基礎知識點更加深入;
四:模組知識點
1:整合百度地圖(3.0.0版),目前有百度定位功能(ThirdMacros.h修改相應的key值)
2:整合友盟統計(ThirdMacros.h修改相應的key值)
3:整合CocoaLumberjack日誌記錄
4:引入第三方inputAccessoryView 解決為一些無輸入源的控制項添加輸入響應。比如按鈕、cell、view等
5:整合個推訊息推送功能(ThirdMacros.h修改相應的key值),認證也要用你們自個的訊息認證;
6:整合友盟分享SDK,並在登入頁實現的(QQ,,新浪)三種的第三方登入功能(ThirdMacros.h修改相應的key值)
7:整合友盟第三方分享(QQ空間分享,朋友圈,新浪微博分享,QQ微博分享,好友)
8:增加關於CocoaLumberjack日誌記錄的展示及查看頁面
9:增加百度地圖顯示頁面功能執行個體,實現在地圖上顯示幾個座標點,並自訂座標點的表徵圖跟彈出提示窗內容,實現當前定位並畫出行車路線圖;
10:增加FLEX,在本地測試版本開啟,FLEX是Flipboard官方發布的一組專門用於iOS開發的應用內調試工具,能在模擬器和物理裝置上良好運作,而開發人員也無需將其串連到LLDB/Xcode或其他遠端偵錯伺服器,即可直接查看或修改正在啟動並執行App的每一處狀態。
11:增加FCUIID協助類,用於擷取裝置標識
12:增加熱更新JSPatch外掛程式,並增加相應的協助類及測試功能(JSPatchViewController)
13:整合啟動廣告功能模組,如果不要功能可以在AppDelegate裡面進行注掉
14:整合CYLTabBarController外掛程式,為項目增加底部4個TabBar菜單
15:引入LKDBHelper並增加建立資料庫協助類,實現實體直接映射到資料庫表
16:整合第一次啟動的引導頁功能模組
17:整合LBXScan外掛程式,實現二維碼相關功能模組,包含掃二維碼顯示結果、從相簿讀取圖片中的二維碼結果
18:封裝MBProgressHUD擴充類,定義一些常見的提示效果,詳見MBProgressHUD+MP類
19:開發關於圖片上傳,包含選擇照片、拍照、瀏覽大圖、獲得圖片GPS、圖片名稱、圖片拍照時間、上傳時對圖片進行轉正調整、壓縮圖片、圖片展現效果
20:開發關於圖片上傳帶進度效果,並把照片先存入沙箱中,上傳成功刪除,引入M13ProgressSuite外掛程式顯示進度扇形效果,部分用到ReactiveCocoa知識;
21:編寫一個以iphone5為的字型適配螢幕,相容iphone6+效果,如果你的不是iphone5,可以修改相應的宏定義,現在是以iphone5為標準
22:編寫一個UITableViewCell倒計時功能,執行個體因為沒有服務端介面,所以時間都以本地時間為準,正式項目時間都要從服務端擷取;
23:引入WebViewJavascriptBridge進行H5互動,並對官網執行個體進行註解
24:增加省市區三級聯動的協助類,可以設定綁定預設值,也可以查看當前的彈出窗狀態,並實現其小執行個體
25:增加自訂彈出窗協助類,類比系統UIAlertView效果,增加一個帶UITextView的彈出效果,其它自訂視圖根據項目再建立;
26:YYText富文本執行個體 簡單實現關於YYText的運用,並包含一些小執行個體
27:列表行展開跟回收隱藏 實現列表分組顯示,然後實現可以對每一組進行展現跟收縮的功能;
28:常見表單行類型 常見的幾種表單實現方式,包含輸入、選擇、多行輸入、時間選擇;
29:Face Service註冊及驗證 整合識別SDK,完成人臉的識別簽到效果;
30:JavaScriptCore運用 跟H5結合的執行個體,完成相應的調用效果
31:Masonry布局執行個體 列出一些比較常見的布局方式
32:鍵盤處理操作 實現關於鍵盤彈出時的自訂視圖高度問題
33:自訂導覽列動態顯現效果 可以實現滾動時對導覽列的變化,監聽關於滾動的變化
34:列表只載入顯示時Cell的SDWebImage圖 實現列表在快速滾動時行的圖片先不進行載入,直到停止時才進行載入圖片,最佳化展現
35:長按列表行拖動效果 實現列表中的某一行進行動態拉動,並插入到其它位置效果
36:自訂日期彈出控制項,過濾不符合最大時間跟最小時間範圍;
此模組也是項目佔比重最多的部分,裡面已經包含常見的功能點,其實每一個都是一個真實的功能實現;相信這些功能點已經足夠滿足你開發一個APP;你可以針對每一個功能點進行查看;
四:外掛程式介紹
abstract_target 'MobileProjectDefault' do pod 'AFNetworking', '~>3.0' pod 'ReactiveCocoa', '~> 2.5' pod 'SDWebImage', '~> 3.7.5' pod 'JSONModel', '~> 1.0.1' pod 'Masonry','~>0.6.1' pod 'FMDB/common' , '~>2.5' pod 'FMDB/SQLCipher', '~>2.5' pod 'CocoaLumberjack', '~> 2.0.0-rc' pod 'BaiduMapKit' #百度地圖SDK pod 'UMengAnalytics-NO-IDFA'#友盟統計無IDFA版SDK pod 'GTSDK' #個推SDK pod 'UMengSocial', '~> 4.3' #友盟社會化分享及第三方登入 pod 'FLEX', '~> 2.0', :configurations => ['Debug'] pod 'ActionSheetPicker-3.0' pod 'JSPatch' pod 'XAspect' pod 'CYLTabBarController' pod 'LKDBHelper' pod 'RegexKitLite', '4.0' pod 'IQKeyboardManager', '~> 3.3.7' #相容IOS7 pod 'LBXScan','~> 1.1.1' pod 'MBProgressHUD', '~> 0.9' pod 'MWPhotoBrowser' pod 'M13ProgressSuite', '~> 1.2.7' pod 'WebViewJavascriptBridge', '~> 5.0' pod 'YYText' pod 'LazyScroll' pod 'ZFPlayer' pod 'TZImagePickerController' #照片選擇瀏覽器 pod 'UITableView+FDTemplateLayoutCell' target 'MobileProject_Local' do pod 'MLeaksFinder' #可以把它放在MobileProject_Local的target中 這樣就不會影響到產品環境 end target 'MobileProject' do target 'MobileProjectTests' do inherit! :search_paths pod 'Kiwi', '~> 2.3.1' end endend
上面這個是目前通過Pod引入的第三方主流外掛程式,當然熱更新記得拿掉,目前蘋果已經不支援了,此處只是為了讓你瞭解關於它是如何運用;
整體項目中很多細節跟功能代碼,就不一一列出,假如你對此項目感興趣可以自行下載瞭解;
本項目代碼已經分享到github上:https://github.com/wujunyang/MobileProject