讓你快速瞭解並掌握如何進行iOS開發技能

来源:http://www.cnblogs.com/wujy/archive/2017/08/14/7359234.html
-Advertisement-
Play Games

首先你要花點時間針對objective-c語言的學習;畢竟這個是iOS開發的基礎(你也可以嘗試用Swift,但此項目只是針對OC),編程套路其實都是差不多,多寫多想多實踐;關於環境的搭建就不在本文進行介紹,這部分內容可以自行百度或谷歌,都有相應的說明; 對於一個剛入門總是希望有個完整的項目可以直接運 ...


 

首先你要花點時間針對objective-c語言的學習;畢竟這個是iOS開發的基礎(你也可以嘗試用Swift,但此項目只是針對OC),編程套路其實都是差不多,多寫多想多實踐;關於環境的搭建就不在本文進行介紹,這部分內容可以自行百度或谷歌,都有相應的說明;

對於一個剛入門總是希望有個完整的項目可以直接運行,並且從中學習功能模塊如何開發;本項目初識就是為了把常見的功能模塊進行一個展現,裡面還包含一些基礎知識的介紹;如果可以大概看完項目中的代碼,對於編寫一個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:人臉識別註冊及驗證 集成識別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
    end
end

 

上面這個是目前通過Pod引入的第三方主流插件,當然熱更新記得拿掉,目前蘋果已經不支持了,此處只是為了讓你瞭解關於它是如何運用;

整體項目中很多細節跟功能代碼,就不一一列出,假如你對此項目感興趣可以自行下載瞭解;

 

本項目代碼已經分享到github上:https://github.com/wujunyang/MobileProject

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 功能:添加事件/完成事件/刪除事件 ...
  • 1.事件冒泡: 2.獲取某個元素的CSS屬性值: ...
  • 一、事件基礎 PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change... 移動端:cli ...
  • 產品終於上線,後期主要是優化了。在開發過程中用到了很多location對象的知識,趁現在有時間先整理一下。 Location 對象存儲在 Window 對象的 Location 屬性中,可通過window.location對其訪問,表示那個視窗中當前顯示的文檔的 Web 地址。它的 href 屬性存 ...
  • 本系列課程選用vue的版本為1.0.21, 什麼是vue? vue是由尤雨溪開發的一款基於MVVM的框架,M->模型,V->視圖, 也就是說模型數據改變了,視圖也跟著改變, 視圖內容改變,模型內容也跟著改變, 業界稱之為雙向綁定,或者說雙向數據驅動,基於此特點,學習這個框架,跟jquery完全不同, ...
  • 本文為純理論文章,沒有 Demo,沒有配圖,可能會略微枯燥。 大家都知道,position:fixed 在日常的頁面佈局中非常常用,在許多佈局中起到了關鍵的作用。它的作用是: position:fixed 的元素將相對於屏幕視口(viewport)的位置來指定其位置。並且元素的位置在屏幕滾動時不會改 ...
  • 一、在ES5中存在6中數據類型 基本數據類型:undefined,null,boolean,string ,number 引用數據類型:Object 在ES6中引入新的數據類型(第七種):Symbol 二、作為屬性名的Symbol。 ...
  • Spinner使用一 一、使用方法 1、在layout中創建Spinner控制項 <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" / ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...