GitHub上Swift開源專案!
swift-open-project
這裡彙集了目前為止最為流行的Swift開源專案,選取SwiftGuide中的開源部分,這裡將每週對專案進行總結,如果大家有推薦的可以聯絡[email protected],或者issues,歡迎Star、Fork。感謝SwiftGuide。
1. 實用類庫
* 工具類
* Dollar:尤其在 Array 和 Dictionary 的支援上(實現類庫僅一個 Dollar.swift 檔案)。用過 Javascript 版的 Lo-Dash 或 underscore 就知道其實用程度。它是一套函式化程式設計的工具庫。另一個類似的更完整的版本是
* ExSwift:實用類擴充套件庫。另一個 Lo-Dash 或 underscore 的 Swift 版本實現,相對於 Dollar.swift,此版本有更完整的 API 實現。包括了對 Array, Int, String, Float, Range, Dictionary, NSArray 的擴充套件及其它實用方法。完全遵循面向物件的擴充套件原則。
* lingoer/SwiftyJSON:這是解析 JSON 字串封裝類。實現功能與 Javascript中 的 JSON.parse 相近,使用方便。By @lingoer
* SwiftyJSON/Alamofire-SwiftyJSON
* swift-serializeswift object serialize/deserialize of json json序列化跟反序列化
* matthewcheok/JSONCodable:基於 Swift 2.0 新特性(Protocol Extensions and Error Handling)的JSON 解析類。
* typelift/Basis:這個實用類庫支援範圍很寬範,封裝主要以簡化及方便呼叫系統API為主,使程式程式碼看上去更優雅。遺憾地是,目前作者並沒有提供 API 文件或示例程式碼,對於初學者使用會額外帶來一點點學習成本。
*
* gfx/Swift-JsonSerializer:JSON 解析又多了一種選擇。
* Ahmed-Ali/JSONExport:一款實用工 具,可以將 JSON 轉換並輸出為 Swift 語言類模型(也支援Android上的Java),支援簡單的定製。
* hubertr/Swell: 同時支援 Swift 和 OBJC 的 Log 實用類。喜歡 Log4j 風格的日誌管理類的同學可以收入。
* RSBarcodes_Swift:”RSBarcodes allows you to read 1D and 2D barcodes using metadata scanning capabilities introduced with iOS 7 and generate the same set of barcode images for displaying and sharing.” By @yeahdongcn Swift 語言版二維碼識別及生成類庫。
* SwiftP2P/SwiftSSL:常用 Digest 和 HMAC 的封裝。如此封裝後,使用加密演算法確實很方便。很不錯的一個國產”輪子”!By @你全家都快到碗裡來
* Hearst-DD/ObjectMapper:物件與 JSON 互轉實用類庫。需要的同學可以收一下。
* DaveWoodCom/XCGLogger : 這是一款功能比較健全日誌輸出框架(Log4Swift)。之前推薦過一款類似的 hubertr/Swell,但它的功能明顯沒有這款強大。
* isair/JSONHelper :又一款JSON轉物件類庫,算上,lingoer/SwiftyJSON,owensd/json-swift,gfx/Swift-JsonSerializer,已經有四款了。同學們根據喜好及需求,擇優使用吧。
* kylef/Stencil:通過在模板中支援 if, for, ifnot 等語法標籤,實現更強大、更靈活的資料及格式輸出。
* kylef/PathKit: 簡單、實用的檔案路徑操作類,常用功能一個也不少。
* thoughtbot/Argo:一個帶有實戰說明的 JSON 解析方案及類庫。
* typelift/swiftz: 一個幫助實現函數語言程式設計的類庫,定義了一系列相應的資料結構。
* dongri/OAuthSwift:Swift 版 OAuth(1/2) 授權類庫。對於作者提供的 API,看著舒服,用著方便。
* p2/OAuth2:獨立又純粹的 OAuth2 認證授權類庫,作者所提供的示例及流程說明清晰又簡潔。
* tadija/AEXML:簡單又易於使用的XML解析類。作者提供了完整的示例程式。
* duemunk/Async:一個後臺執行程式碼封裝庫,它可以讓你的後臺程式碼封裝語法更簡潔。
* jquave/EasyCast:這是一個自動強制轉換操作符左右型別及常用數學函式引數型別無障礙使用的類庫。@onevcat幾個月前也寫過類似功能庫 onevcat/Easy-Cal-Swift,不過,停滯更新很久了。
* ArtSabintsev/Siren:當應用更新時,通知使用者並提供 App Store 連結供使用者更新的開源庫。P.S. 該開發者也曾提供 Objectvie-C 語言版ArtSabintsev/Harpy。
* kishikawakatsumi/KeychainAccess:這套Keychain管理比較完整。支援本地應用,網路應用,以及與Touch ID的整合應用。
* nori0620/SwiftFilePath:功能強大的檔案及路徑管理封裝類庫。
* onevcat/RandomColorSwift:”剛剛開源了一個自動生成好看的顏色的 Swift 庫,這是 randomColor.js 專案的 Swift 移植版本。在學習 Swift 的童鞋不妨一看,如果可以對於大家在 Swift 實際使用中的某些概念和寫法有所啟迪的話就再好不過了。” By @onevcat
* beltex/SMCKit:Mac 系統管理控制器 SMC(System Management Controller)Swift 語言版封裝庫。通過該類庫,簡單的幾行程式碼就可知 CPU 溫度,風扇轉速,電池狀態等硬體狀態或活動狀態。
* radex/SwiftyUserDefaults:輕量級資料儲存類 NSUserDefaults 擴充套件類,它使型別資料訪問和儲存更為便捷、直觀。
* akosma/SwiftMoment:時間和日曆函式封裝庫,也是經典的 moment.js 的 Swift 語言版本實現。
* imaginary-cloud/CameraManager:相機管理封裝類庫。看著極好用的樣子。
* yannickl/QRCodeReader.swift:一款簡單的 QR 二維碼閱讀元件及示例,提供前後相機切換功能。
* aaronabentheuer/AAFaceDetection:簡單、實用的面部識別封裝庫。雖然該技術從 iOS 5 發展,不過真正有趣的應用還不多。例如:在視訊直播中可以檢測觀眾情感(微笑或眨眼),或注意力(看著螢幕或沒有)。因此,作者對其抱以很高的期待,並已經著手開發實驗室類大專案。
* zenangst/Versions:版本比較小工具。
* NorthernRealities/Rainbow:旨在提高程式碼可讀性及易用性的 UIColor 擴充套件,它使原先有限的預定義顏色(方法)選擇,擴充套件至超過 1200 種。
* jpotts18/swift-validator:基於規則的輸入驗證類庫。專案良好的面向物件設計思想,使規則的擴充套件及自定義非常方便。P.S. 對於規則,若有更復雜的需求,則需要有更專業的規則引擎(甚至是基於自然語言的規則配置)解決方案。比如:開源的 Drools,商用的 ILOG 等。
* nghialv/Transporter:短小、精悍、易用的多檔案(併發或順序)上傳和下載傳輸庫。還支援後臺執行、傳輸程序跟蹤、暫停/續傳/取消/重試控制等功能。
* krzyzanowskim/CryptoSwift:純 Swift 版 Crypto 演算法及相關功能類庫。是一套易用、易擴充套件、完整、不可或缺的功能庫。
* nomothetis/SemverKit:針對符合『語義化版本規範 2.0.0』版本號的解析、比較運算類庫。不僅支援 Major, Minor, Patch,還支援 Alpha 和 Beta 預釋出版本,以及相應地遞增運算擴充套件。
* harlanhaskins/Punctual.swift:通過一系列基礎資料型別擴充套件,使日期訪問及操作更加自然語言化。若沒有動態語言化地超強擴充套件及定製能力,如此優雅的日期操作是無法實現的。
* ayanonagon/Parsimmon:小而美的語言學類庫封裝工具包。提供分詞、標記詞性、詞形歸併、樸素貝頁斯分類、決策樹等自然語言分析小工具。P.S. 英語分詞效果好於中文,感興趣的同學可以針對中文做一些優化開發。參考譯文 NSHipster - NSLinguisticTagger
* soffes/X:等不及蘋果 iOS/OS X 平臺統一的開發同學(Sam Soffes),啟了一個專案,先將常用類庫統一了。該專案剛開始,感興趣的同學可以考慮參與其中。
* naoty/Timepiece:直觀(自然語言化)的日期類擴充套件。它使日期加減運算、初始設定、日期變更以及基於指定格式解析轉換變得方便、易讀。P.S. 相比前一段時間推薦另一個類似日期庫(Punctual.swift O網頁連結)功能更豐富。
* macoscope/SwiftyStateMachine:應用好狀態機,不僅提高程式可維護性,更大大增強了程式健壯性。
* benzguo/MusicKit:一套音樂編輯及創作框架。懂音樂、玩音樂的同學值得擁有。
* ArtSabintsev/FontBlaster:呼叫自定義字型封裝類。很實用、很方便。
* phimage/Prephirences:這個庫可以讓開發者更方便管理、讀寫應用的配置資訊。很實用。
* radex/SwiftyTimer:一個更友好、更簡單的時間操作 NSTimer 擴充套件。P.S. 類似針對日期有 Punctual.swift 和 Timepiece。
* liufan321/SwiftQRCode:簡單、實用的 QR Code 掃描識別及生成庫。
* emaloney/CleanroomLogger:相當於 CocoaLumberjack 或 Log4j 的 Swift 版本,功能上甚至更強大。另外,原始碼中已經內含了完整的 API 文件,使用非常方便。
* Khan/Prototope:一款輕量的 Javascript 橋接 Swift 庫。對於 JS 控,或許可以從玩這個專案開始 iOS 原型開發。
* malcommac/SwiftDate:特別完整、強大的日期操作管理類庫。它幾乎涵蓋了已知開源日期類庫所有優秀特性。是一款值得毫不猶豫收錄的類庫。
* nghialv/Future:基於微框架設計思想的非同步執行及結果響應類。由示例發現,程式碼即簡單又幹淨。
* alexeyxo/protobuf-swift:Protocol Buffers 的 Swift 語言實現庫。P.S. Protocol Buffers 是 Google 開源專案,主要功能是實現直接序列化結構化的物件資料,方便跨平臺快速傳遞,開發者也可以直接修改 protobuf 中的資料。相比 XML 和 JSON,protobuf 解析更快,儲存更小。
* soffes/SyntaxKits:TextMate 風格語法高亮類庫(基於 Swift 2.0)。
* glock45/swifter:一款極其輕量的 HTTP 伺服器引擎。#Swift 2#
* andreacremaschi/GEOSwift:可輕鬆地處理地理物件模型和相關地形操作,是一個極其易用的地理封裝庫(整合 MapKit 和 Quicklook)。絕佳好輪子,不容錯過。
- 圖片
- kaishin/ImageScout:最小網路代價獲得圖片大小(寬和高)及型別,它對於很多場合,比如:佈局和排版都有積極作用。
- kaishin/gifu:高效能 GIF 顯示類庫 Swift 版本。
- indragiek/DominantColor:採用YUV色域編碼規則及K均值聚類演算法提取圖片代表色開源專案。很實用,很贊!
- iSame7/Panoramic:該專案通過 Core Motion 實現了變換角度移動手機時,使圖片顯示產生對應位置及角度的變換。從而達到了具有現場感的圖片瀏覽功能。
- gavinbunney/Toucan:小而美的圖片變換及處理類(支援:resize, clip, crop, scale, Ellipse Mask, Rounded Rect Mask, Image Mask)。功能略有超預期的感覺。
- schwa/SwiftGraphics:一個易學、易用的繪圖工具庫封裝。作者很勤勞,專案正在持續更新中。
- contentful-labs/Concorde:一個可用於下載和解碼漸進式 JPEG 的庫。特定場合很有用。類庫的呼叫方法也很自然、方便。
- FlexMonkey/SnapSwift:一款 Snapseed 風格濾鏡及引數編輯選單。彈出選單項後,上下、左右滑動即可調整濾鏡引數。
- kiavashfaisali/KFSwiftImageLoader:極高效能、輕量、低功耗網路圖片非同步載入擴充套件庫(支援 iOS 和 WatchKit)。良好的快取管理機制保證的作者設計初衷。P.S. 作者曾開發過 KFWatchKitAnimations:一款為 Watch 提供 60 幀動畫顯示效果解決方案及示例。
- yannickl/DynamicColor:強大的顏色操作擴充套件類。通過該類,你可以通過擴充套件方法基於某個顏色得到不同深淺、飽和度、灰度、色相,以及反轉後的新顏色。是不可多得的好類庫。
- Jan0707/SwiftColorArt:根據圖片色系決定所在介面背景色及字型顯示顏色。類庫及示例程式碼也很簡潔且易於使用。這樣的專案真的帶給我驚豔。何況,該開發者備註了這是他的第一個Swift專案。
儲存
- SQLiteDB in Swift:”This is a basic SQLite wrapper for Swift. It is very simple at the moment and does not provide any advanced functionality. Additionally, it’s not pure Swift at the moment due to some difficulties in making all of the necessary sqlite C API calls from Swift.”
- Alecrim/AlecrimCoreData:更容易地訪問 CoreData 物件封裝類庫。除了 CRUD,還提供指標定位,強大的排序、篩選,非同步資料獲取,以及獨立執行緒後臺存取資料。
- Realm - a mobile database:Realm主打移動資料庫。除了更輕量,甚至還可以應用到可穿戴。低耦、面向物件的設計風格也是非常亮麗的。
- nerdyc/Squeal:一套非常完善的 SQLite 資料庫訪問 API,無論建庫,建表,CRUD 等常用資料庫操作命令都進行了很好的封裝,另外,版本管理、事務管理、併發管理、命令執行及 Prepare Statement 等都提供相應支援。它是一套不可多得的SQLite管理訪問庫。
- Haneke/HanekeSwift:貌似這個輕量地帶快取圖片元件還不錯。主要功能包括圖片二級快取、非同步載入、後臺執行、自動縮放等。感興趣的同學可以試用一下。
- SugarRecord/SugarRecord:相對於 SQL,CoreData 可以更方便、高效儲存資料,而 SugarRecord 類庫可以讓你更方便的使用 CoreData,同時作者已經封裝好 iCloud,使你的應用開發更如虎添翼。
- aschuch/AwesomeCache:Swift 語言寫的高效能快取物件儲存及管理,定義及使用簡單、易於理解。支援為每個 Cache 物件設定快取有效期。
- daltoniam/Skeets:網路圖片的獲取、快取及顯示類庫,支援快取的清理及時效性管理。
- evermeer/EVCloudKitDao:一套使用 CloudKit 簡單封裝庫。作者還提供了示例專案及程式供開發者參考使用。
- andrelind/Breeze:輕量 CoreData 管理封裝庫。支援 iCloud 。
- arkverse/SwiftRecord:基於 Core Data 極為輕量、易用的物件持久化工具庫,相當於 ActiveRecord 的 Swift 版本。
JohnEstropia/CoreStore:提供高可讀性,一致性及安全性的 Core Data 管理類庫。 其中事務管理及查詢是其比較大的亮點,整套 API 功能完整,風格傳統又實用。非常值得收入。
遠端訪問
- lingoer/GRequest:”@李潔信:個人認為 AFNetworking 這種較重的第三方網路庫將逐漸淡出舞臺,而像樓主這種基於 NSURLSession 並充分利用 Swift 特性寫出來的小而美的庫會受到更多人的青睞!” 作者解讀《GRequest for HTTP Request》。
- daltoniam/SwiftHTTP:Thin wrapper around NSURLSession in swift. Simplifies HTTP requests。感興趣的可以看看程式碼,比較與 lingoer/GRequest 差別。
- AshFurrow/Moya:如果你需要如此功能的 Swift 網路 API,可以考慮使用它。它基於 Alamofire, swfitz 等優秀開源類實現。
- aleclarson/emitter-kit:用 EmitterKit 代替 NSNotificationCenter。這個庫貌似短小、精悍、實用的樣子。更重要是語法精練。
- daltoniam/starscream:Swift 版本 WebSocket 客戶端類庫,支援 iOS/OS X 。 使用方便,跨平臺開發不可或缺的“輪子”。
- shuoli84/SocketIOCocoa:又一款 WebSocket 實用客戶端類庫,作者提供了詳細的測試用例可以做為示例程式碼使用。
- marcelofabri/BigBrother:網路請求活動狀態監視器類。由於 Alamofire 庫並無此項特性,因此它可以做為 Alamofire 的一個擴充套件功能。
- ishkawa/APIKit:為不同來源或型別 Web 服務,提供安全地可定製化網路請求 API 的基礎類庫。很好的面向物件設計思路例項。
- contentful-labs/Stargate:通過 iPhone 橋接實現 Mac 與 Watch 的即時通訊。Stargate 通過封裝兩個優秀的基礎類庫 MMWormhole 和 PeerKit 實現高效的通訊應用。
- JustHTTP/Just:小而美的 HTTP 類。功能簡單、直接、完整且健壯性高。
社交網路
- lingoer/SwiftWeiboKit:”封裝了整個 OAuth 2.0 的授權流程,並提供了幾個簡便易用的請求方法”
框架
- robb/Cartography:Set up your Auto Layout constraints declaratively. 這是有關自動佈局約束一個實用的 Swift 專案,程式碼看似簡單清晰,不過由於設計巧妙。程式碼解讀 By @kaiyuz
- railsware/Sleipnir:一個基於 Swift 的行為驅動開發框架(BDD-style framework)。API 安裝,示例及說明相對比較齊全。
- Quick/Quick:另一款基於 Swift 的行為驅動開發框架。
- inamiy/SwiftTask: 一個很標準的任務及其生命週期管理類庫。作者還附上了一個基於 Alamofire 庫完成的網路檔案下載的任務管理示例。
- inamiy/SwiftState:Swift 版本 State Machine,這是 SwiftTask 的姐妹篇。開發過 Workflow 類應用的同學有沒有很親切。
- colemancda/NetworkObjects:基於Swift的輕量版HttpServer框架,可以做為iOS/OS X分散式物件的替代。可惜缺少演示或示例程式碼。
- Masonry/Snappy:一個基於 AutoLayout 封裝,語法簡潔的輕量級佈局框架。當然,用程式碼還是 storyboard,全憑開發者喜好。若偏好視覺化自動佈局,@DevTalking 的兩篇譯文值得參考《Swift 自適應佈局教程》和《為 iPhone 6 設計自適應佈局》。
- Quick/Nimble:功能更強於Xcode自帶測試框架(XCTest)的測試類庫。
- venmo/DVR:針對網路請求的測試框架,超實用的工具。且支援 iOS, OSX, watchOS 全平臺。
- owensd/swift-perf:針對 Swift 的效能測試方案。通過抽樣場景關鍵程式碼與 C 或 Objective-C 的比較做為其測試基準。
- nghialv/MaterialKit:Swift 版 Google Material Design 元件庫。雖然個人並不推薦在 iOS 平臺上使用非 iOS 風格介面,不過,對於 Android 強迫症“患者”,多一種選擇也是友好的。順帶附上 Google 提供的開源Material Design 圖示集,可以一起收入。
- mutualmobile/MMWormhole:提供了 iOS 應用與擴充套件之間的訊息傳遞,其最有價值之處當屬 iPhone 與 Watch 間的訊息傳遞,從而實現相互操控的功能。
- Khan/Prototope:雖然看不懂這套使用者互動層面的輕量級原型框架用處在哪裡(哪位同學能給俺提示一下)?不過,作者將這套框架的 Swift API完整橋接為 JS 介面倒是很有意思。
- MHaroonBaig/MotionKit:為核心運動框架(The Core Motion framework)提供友好的類庫封裝,以更方便使用三軸陀螺儀和加速感應器特性。
- uber/jetstream-ios:一款 Uber 的 MVC 框架。它同時提供了多使用者實時通訊支援,一旦啟動 JetStream 後端服務,通過 WebSocket 協議可以分分鐘建立多使用者實時通訊應用。
- jessesquires/JSQNotificationObserverKit:一款輕量、易用的通知傳送及響應框架類庫。作者是知名開源專案 JSQMessagesViewController(Objective-C 版即時聊天)的作者 Jesse Squires ,也是一位知名博主,收錄過其文章『An analysis of sorts between Objective-C and Swift』。
- morizotter/TouchVisualizer:實用的多點觸控視覺化元件。擴充套件並作用於 UIWindows,結構上提供了簡單地針對觸控顯示定製,比如觸控點的顏色。這個元件對於需要做應用演示的同學尤其有用。
- FutureKit/FutureKit:“是一個 100% Swift 實現的 Future/Promises 庫,由 Swift Generic 帶來的型別安全、由 GCD 帶來的執行緒安全,通過 FutureKit 可以在 iOS/OS X 下靈活玩轉 Future/Promises 式程式設計了”。推薦者:@圖拉鼎
- SwiftBond/Bond:使用簡單、易於理解的物件繫結框架。比如:你可以使用程式碼 textField ->> label 將輸入框文字對映到標籤中的文字屬性,當文字變化時,標籤文字隨動變化。 真的很方便。
UI元件
- jcavar/refresher:一個常用的下拉即重新整理列表工具類,提供開放介面定製重新整理動態變換效果。
- ariok/BWWalkthrough:讓你的頁面切換動起來,示例效果槓槓的。作者還提供了比較完整的開發文件及示例解說。
- vikmeup/SCLAlertView-Swift:動畫效果彈出框封裝庫(管理於 CocoaPods),使用也足夠方便。試著運行了一下,效果還不錯。
- neoneye/SwiftyFORM:表單輸入框架(亮點是表單驗證規則引擎),是我見過地最易用的 Swift 表單元件。
- ortuman/SwiftForms:這個表單遞交庫簡單實用,支援主要資料型別及定製。快速開發利器。
- coolbeet/CBStoreHouseRefreshControl:這個下拉重新整理庫,提供完全可定製進度變換效果,且極具藝術感。建議有能力的同學把 Objective-C 版本改寫為Swift版本。
- exchangegroup/Dodo:一款輕量地可定製資訊欄小元件。包含 success, info, warning 及 error 型別訊息展現。提供基本的按扭及事件繫結。
- codestergit/SweetAlert-iOS:該彈窗控制元件設計簡單直接,功能完整,動畫效果恰如其分。實在不可多得,必須收錄。
- Ramotion/animated-tab-bar:一款靈動的動畫標籤欄類庫。可在 storyboard 中直接使用,非常方便。Demo 效果非常漂亮。連續三天 GitHub 分類排名第一,且迅速過 600 星。它的程式碼並非複雜或特別,相信大家中意它的還是其設計感。
- Ramotion/paper-switch:類庫實現了當 Switch 元件開/關切換時,平滑過渡到父檢視的變換效果功能(核心類繼承了 UISwitch)。P.S. 該開發者也是這幾天熱門專案 Ramotion/animated-tab-bar 的作者。
- cemolcay/ReorderableGridView:可以拖拽排列 Grid 框格的 UI 元件。功能說明完整,使用方便,應該是一個不錯的 UI “輪子”。
- zhxnlai/ZLBalancedFlowLayout:一個通過調整 cell 大小來利用空間的 UICollectionViewFlowLayout 子類。
- uacaps/PageMenu:分頁式選單控制及動態頁檢視切換。這款控制元件比較實用,且提供 CocoaPods 安裝。
- Yalantis/Side-Menu.iOS:一款帶動畫效果可定製 Slide Menu,可以學習其動畫實現思路。P.S. 對於 Hamburger 式選單,雖然很常用,不過,蘋果並不鼓勵使用,甚至有開發小組對其弊病用自家上線應用前後資料對比進行了抨擊,僅做參考。
- Mozharovsky/CVCalendar:開源 Swift 版日曆元件及示例。該專案開發者充分使用了面向物件設計思想,讓開發者可以更容易擴充套件及定製功能。同時,該開發者還提供了詳細的元件使用方法(Storyboard 和程式碼方式指南)。
- raulriera/TextFieldEffects:具有不同輸入風格及變化效果的標籤和文字框元件庫。它的原型來自 codrops 的 JS/CSS 專案。P.S. 我曾經還推薦過另一款基於 “Float Label Pattern” 風格類似專案 FloatLabelFields,與之一樣優秀。
- MengTo/Spring:不僅具有極簡製作動畫的 API ,還提供 Demo 介面除錯動畫效果,並生成相應程式碼。建議同學們在 Xcode 中執行體驗一次,相信這個開源專案足夠讓你驚豔。已將其收入《Swift 開源專案精選》。
- icanzilb/SwiftSpinner:這個圖文結合程序條功能完整,整體效果還很酷。當然,使用也很簡單。值得收錄。
- ggamecrazy/LoadingImageView:簡單實用的非同步圖片載入類庫及示例。使用方便,功能獨立、完整(離線儲存也在計劃中)。
- pixyzehn/MediumScrollFullScreen:上下滾動時,全屏顯示內容,並自然消隱上下選單。由此專案感知,作者是一位很注重細節的開發者,他的另外幾個選單類專案也都不錯,值得參考,比如:PathMenu, MediumMenu 等。
- prine/ROStorageBar:儲存器使用情況指示條元件,顯示引數豐富,易於使用。開始以為它也包含了計算功能,可惜並沒有,只是一個純介面的小元件。不過,仍然有一定的實用性。
- Yalantis/Persei:動畫隱藏或顯示頂部選單支援庫及示例專案。P.S. Yalantis 這個開發商,在 GitHub 上展示開發能力,Dribbble 上展示互動設計能力,並在 Behance 推廣專案。整體展現了其出眾的軟體過程管理及綜合開發實力。非常值得國內開發者學習。
- zemirco/swift-linechart:功能完整、實用的折線圖元件。使用方便,引數配置簡單。是不可多得的優質元件。
- khawars/KSTokenView:帶搜尋、快捷輸入、分段顯示關鍵詞的增強輸入元件。作者提供了豐富地配置引數。主體功能同群發簡訊時選擇、編輯好友群。
- gali8/Tesseract-OCR-iOS:OCR 文字識別也有相應 iOS 專案。雖然是 Objective C 版,不過,提供 CocoaPods 三方庫引用。與 Android 版師出同門。屬於主流開源專案。
- Akkyie/AKPickerView-Swift:AKPickerView O網頁連結:一款小而美的 3D 效果選擇器。P.S. 作者分別提供了 CocoaPods 和 Carthage 兩種方式的三方介面對外引用和指南,Carthage 獲得越來越多主流開發者重視了。
- danielgindi/ios-charts:一款優秀 Android 圖表開源庫 MPAndroidChart 的 Swift 語言實現版(支援 Objective-C 和 Swift 呼叫)。預設提供的示例程式碼為 Objective-C。P.S. 當然 @周楷雯Kevin 同學的 PNChart-Swift 也不容錯過,同學們可以各取所需比較使用。
- scotteg/LayerPlayer:一款全面展示核心動畫 API 示例專案(上架應用)。包括 CALayer, CAScrollLayer, CATextLayer, AVPlayerLayer, CAGradientLayer, CAReplicatorLayer, CATiledLayer, CAShapeLayer, CAEAGLLayer, CATransformLayer, CAEmitterLayer 等使用的互動演示。RayWenderlich 有針對該專案的 撰文解讀(中譯文 By @TurtleFromMars),與開發者 Scott Gardner 的 視訊討論。
- ReactiveCocoa/ReactiveAnimation:“ReactiveCocoa 推出了一個叫 ReactiveAnimation 的子專案,直接用完全用 Swift 來實現了。國外開發者社群就是拽啊! By @圖拉鼎”。
- larcus94/BRNImagePickerSheet:圖片或視訊選擇器(可多選)元件及其示例專案。P.S. 作者推薦低藕、非侵入式三方庫依賴引用方案 Carthage,從 iOS 8 開始,越來越多開發者推薦 Carthage 做為標配了。
- JayGajjar/JGTransitionCollectionView:基於集合檢視擴充套件實現完成自動佈局及單元項 Flip 式動畫效果(效果很贊)。元件使用方便、自然(只需設定集合檢視資料來源的標準方式即可)。
- knutigro/COBezierTableView:通過編輯 Bezier 曲線四點位置設定 TableView 內 Cell 及對應按扭位置。實驗效果很贊。#為開源點贊#
- szk-atmosphere/SAHistoryNavigationViewController:通過繼承 UIViewController 並擴充套件 UICollectionView,UINavigationController,NSLayoutConstraint 等介面及佈局控制核心類,應用內模擬實現 iOS 任務管理介面及切換元件。
- szk-atmosphere/SABlurImageView:支援漸變動畫效果的影象模糊化類庫。P.S. 與前幾天推存類庫 SAHistoryNavigationViewController 是同一位作者。
- cjwirth/RichEditorView:一套可定製富文字編輯器元件及示例。功能完整、程式碼簡練、實現邏輯巧妙(編輯器核心與 WebView 結合,採用 HTML5 contentEditable 編輯模式,執行JS 配套命令 execCommand 實現富文字編輯功能)。
- SemperIdem/MKMapView-Extension:“在用 MapKit 的時候發現MKMapView缺少了極其重要的 ZoomLevel 這一個功能,因此便參照了網上的一些OC例程寫了一個Swift版本的擴充套件,允許開發者獲取當前地圖的縮放級別和設定縮放級別。By @星夜暮晨”。
- didierbrun/DBPathRecognizer:基於路徑模型的手勢識別工具(僅一個核心類)。妙處在於作者通過示例專案設定好 A-Z 字母的路徑模型後,可以進行相應的手寫識別。儘管它可能無法替代專業的手寫識別輸入,不過對於普通的手勢識別還是搓搓有餘了。
- Yalantis/GuillotineMenu:正如其專案名字一樣,這是一款極具創意及突破精神的動畫演示專案。P.S. 這家公司(Yalantis)做動畫,尤其介面特效出神入化。且 iOS / Android 通吃。
- aryaxt/ScrollPager:一款小巧、易用的頁滾介面元件。結合 storyboard 及滾動檢視,輕易實現拖拽頁滾功能。
- wltrup/iOS-Swift-Circular-Progress-View:小而精悍地可定製類似 Apple Watch 圓型程序條元件。該元件同時支援程式碼及 Interface Builder 兩種使用方式。
- indragiek/MarkdownTextView:非常輕量、簡潔、高效的 Markdown 編輯元件及示例。這樣的開源專案太喜歡了。
- nickoneill/PermissionScope:向用戶請求 iOS 許可權的封裝元件。封裝庫 API 呼叫非常方便,呼叫程式碼也很精簡。一個很好的“輪子”,值得收錄。
- zhxnlai/UIColor-ChineseTraditionalColors:中國傳統顏色引用 UIColor 擴充套件。“UIColor.桃紅(),UIColor.竹青() …”,如此引用是否感覺親切多了。P.S. 好的專案,源於用心,技術次之。這位同學已經深諳其道了。
- FlexMonkey/ShinpuruLayout:通過水平和垂直分組模組實現簡單、快速佈局的元件庫。作者提供了多種不同型別的佈局示例。
- ziligy/JGFlipMenu:Flip 式選單及其對應動畫元件。使用也很簡單直接 Interface Builder 。贊不讚自己看。
- KittenYang/KYFloatingBubble:實現iOS7 Game Center浮動氣泡的一種思路。示例程式碼不多,效果還真得贊。
- i-schuetz/SwiftCharts:基於層架構設計思想的圖表類庫。基於層架構,無論定製新的圖表型別還是已有圖表的疊加,都變得非常的容易。
- Yalantis/PullToRefresh:重新整理動畫可定製的下拉資料請求更新元件(類庫非常簡潔易用)。該元件由知名開源開發商 Yalantis 開發,並且還提供了完整動畫定製演示專案 PullToMakeSoup
wongzigii/Butterfly:一款輕量、優雅的缺陷報告及反饋元件。與應用整合極為簡單(僅需 2 行程式碼)。這個“輪子”實在太實用了,強烈推薦。附演示示例動態圖。作者:@Wongzigii
測試相關
- kylef/Mockingjay:在單元測試時,模擬匹配條件的任意 HTTP 請求,該類庫集成於 XCTest 框架內。是一套不可多得的快速開發工具庫。
- practicalswift/swift-compiler-crashes:旨在收集使 Swift 編譯器崩潰的測試用例。這是一個瘋狂又非常有意義的開源專案。可以定期關注一下。P.S. 該開源專案作者最新提示:Xcode 6.3 beta 與 Swift 1.2 已修復了其已發現編譯器崩潰級缺陷的 83% 。
- czechboy0/Buildasaur:自動測試 GitHub Pull Requests,以提高團隊生產力。Buildasaur 安裝條件:Xcode 6+, Xcode Server 4+ 和 GitHub 倉庫證書。
- czechboy0/XcodeServerSDK:非官方 Xcode Server SDK 封裝庫。 P.S. 該 SDK 分離自之前推薦的由該作者開發的自動測試框架 Buildasaur。
- realm/SwiftCov:Realm 開發的 Swift 程式碼測試覆蓋率命令列工具。大家可以用用看,試試效果如何?
2. 示例專案
- 官方示例:”比起 GitHub 上的開源專案來說,官方的程式碼我覺得是更有參考價值的,比如 Session 406 的程式碼,Lister,就用一個 Swift 實現的包含 OSX 和 iOS 的” By @晨鈺Lancy
- 官方示例 - Lister:“Lister 這個官方 demo 也跑起來了。Apple 還是很用心的,不僅做了 iOS、Mac 和 Apple Watch 版本,並且為這個 demo 分別用 Objective-C 和 Swift 實現了一遍,最後還配了整整 30 頁的文件!By @圖拉鼎”。官方示例一份頂十份,學走路從官方文件及示例開始。
- tsunghao/learn-swift:該專案是 nettlep/learn-swift 專案的(正體)中譯版。最難能可貴的是原專案最後更新是 6 個多月前了。而中譯專案已經更新至 Xcode 6.2(6C131e) ,且下一版(Swift 1.2)正式釋出後,作者還會繼續更新。
- VirtualGS教程示例:以下示例程式來源於林泰前老師微博或部落格釋出,為方便大家學習 Swift 程式設計,有幸獲得林老師的准許在這裡釋出。
- Easy-Cal-Swift:”實在忍不了 Swift 的數字計算時候的好麻煩的強制轉換了,過載了一下加減乘除之類的操作符,這樣就不用顯式地轉換型別了…(對於像我這樣現在連補全都沒有的孩子來說,能省好多時間啊- -)” By @onevcat
- Swift版的知乎日報:學習一門新語言,光看是沒有用的,想要快速的掌握它,就得投入到真實專案的開發中,仿照 @YANGReal 的糗事百科,做了一個 Swift 版的知乎日報
- Swift版PM2.5的例子:一個很好的 Swift 與 Objective C 協同工作 GitHub 開源專案。用到的開源類庫有 TFHpple:以 XPath 方式解析 HTML,SCLAlertView:使用 Swift 寫的 AlertView SVProgressHUD 進度條 By @熒星訴語
- practicalswift/Pythonic.swift:用 Swift 語言實現 Python 標準庫的一部分。然後,用 Swift 寫一段 Python 風格的程式,這是 Python 程式設計師想要的嗎?相信這不過是一個實驗,以此說明 Swift 語言的多變性、動態性的能力。
- gemtot/iBeacon:Swift 版 iBeacon 簡單專案(支援最新Beta 6編譯)。感興趣的同學可以學習一下。有關於 Passbook 應用及 Passkit 框架程式設計知識這裡有一篇網友較早釋出的《iOS 6 - PassKit 程式設計指南》
- evnaz/ENSwiftSideMenu:一個簡單的 Slide 側拉選單實現。使用很方便:sideMenu = SideMenu(sourceView: self.view, menuData: [“UIDynamics”, “UIGestures”, “UIBlurEffect”])
- iluuu1994/Pathfinder:一個有趣的演算法類專案。雖然目前只是個演示專案,不過,作者有計劃加入更多演算法優化程式,同時,也有計劃支援3D地圖。
- KhaosT/HomeKit-Demo :HomeKit 演示專案,可以與HomeKit模擬器協同工作。由此進一步思考:HomeKit 配合 iBeacon、藍芽,甚至更具DIY潛力的樹莓派(Raspberry Pi)組成未來家居智控中心,這個方向上的開發潛力巨大。感興趣的同學可以關注一下。
- vandadnp/iOS-8-Swift-Programming-Cookbook:來自《 O’Reilly’s iOS 8 Swift Programming Cookbook》的配套示例。書買不買另說,如此即時、完整、豐富的新書示例專案真不多見。悟性好的同學,開發時參考一下示例是不是就不用買書了?
- sxyx2008/FoodPin:如此完整的 Swift 示例專案,可以幫助學習到不少Swift程式設計技巧。”用Swift寫的一個功能比較完善的App,參照 Beginning iOS 8 Programming with Swift 一書。功能比較完善。AutoLayout、Core Animation、Core Data、國際化等。” By @熒星訴語
- PhotoBrowser:”展示 Instagram 授權使用者釋出的照片的 App,參考了Ray Wenderlich 的 Alamofire 教程,還用了 SwiftyJSON 和 FastImageCache。” By @Kyrrr
- mslathrop/SwiftNote:一款簡單的筆記應用及其 Today 外掛。可惜開發者還不知道如何與 iCloud 進行資料同步,有興趣的同學可以參與一下。
- dasdom/BreakOutToRefresh:下拉載入重新整理時,嵌入了用 SpriteKit 框架寫的有趣的小遊戲播放頁。P.S. 此例中作者嵌入的或許並沒有讓你耳目一新,甚至感到有點牽強,不過,若嵌入更合適的呢?
- eleks/rnd-apple-watch-tesla:Apple Watch 操作 Tesla 汽車。可惜是 Objective C 版本的,否則,Swift 同學又是一次很好的學習機會。
- kenshin03/Cherry:定時器應用,功能包括在手錶上新建活動,啟動/停止活動,持久化活動資料在 iPhone,在 Glances 中檢視活動狀態並可直接切換至該應用。P.S. 該應用由作者之前開發的 Objective-C 專案採用 Swift 重寫後獲得。
- slazyk/SINQ:該專案把來自 C#和VB 的 LINQ 整合查詢功能吸收了進來。是不是又一次證明了 Swift 吸納各語言精華的能力很強大,是不是又一次向”大一統”的程式設計/編譯環境邁進了一步?
- MengTo/DesignerNewsApp:一款針對 Designer News 網站的完整 iOS 應用,最具特色地是開發者對動畫技術得心應手的應用。P.S. 該開發者釋出過一套非常完整、實用的優秀動畫封裝庫及演示工具 Spring。
- MoZhouqi/VoiceMemos:“語音筆記本應用。用到了一些 iOS 8 新技術,比如 UISplitViewController、UISearchController、UIAlertController、自定義 Presentations、視覺化開發,還有一些語音相關的用法。介面開發的新技術介紹可以參考 @onevcat 的 這個帖子”。
- CarlosButron/Swift:60 多個 Swift 示例專案及程式碼集錦,技術及品類幾乎涉足方方面面。
- lizyyy/Homeoff:“用swift寫了一個模仿Launcher通知中心快捷方式的應用。支援 20 個應用,並增加了一個返回到桌面來解放Home鍵的功能 By @Swift攻略”。
- MakeZL/ZLSwiftRefresh:下拉重新整理/上拉載入元件擴充套件及示例。“支援自定義動畫,整合簡單,相容 UITableView,CollectionView,ScrollView,WebView”。
- FlexMonkey/MetalParticles:超強計算、極致渲染,發揮 GPU 最高效能 Metal 框架演示專案。P.S. Metal 框架是並駕於 OpenGL ES 的底層圖形計算介面。相比於 OpenGL,它甚至更底層、更接近 GPU。它是需求超強計算及渲染效能要求的遊
戲平臺不二之選。 - Mav3r1ck/Project-RainMan:一款很酷的天氣預報應用。Forcast.io 提供的天氣預報 API 很贊。
- kongtomorrow/WatchTransition:模擬 Apple Watch 上的動畫過渡效果。Objective-C 和 Swift 混搭開發學習參考。
- WWDC 2015 watchOS應用示例:1. Lister(大家比較熟了); 2. PotLoc:使用 CoreLocation 定位;3.WatchKitMoviePlayer: 使用 WKInterfaceMovie播放視訊。
- The-Swift-2.0-Programming-Language-playground:“自己整理的對應最新發布《The Swift Programming Language》Swift 2.0 一書中的內容的Playground,基本在Playground中包含了書中描述的知識點 By @孟祥月”。
- phpmaple/Stick-Hero-Swift:“開源小遊戲Stick-Hero,和大家一起學習Swift2和Spritekit,基礎功能完成,後續新增一些細節方面設計 By @KooFrank”。#Swift 2#
3. 完整專案
- WWDC app for OS X:去年還只是一個會後的腦補演示專案。而今年已然成為追劇觀看的超實用專案。連編譯都懶得做的同學直接下載應用即可。
- tnantoka/edhita:edhita 是一款用 Swift 重寫並完全開源的文字編輯器。AppStore 上已經有更新版下載。試用後感覺還不錯。它甚至支援 Markdown, HTML 等檔案編輯後的預覽顯示。
- jurre/TravisToday:一個功能相對完整的服務於 Travis CI 系統的 OS X 應用擴充套件 Today 專案案例。
- stakes/Frameless:一款基於 WKWebView 的最小化全屏瀏覽器,主要功能是方便開發者採用HTML5做原型設計或 App 釋出。對於測試工程師或喜歡極簡、全屏瀏覽使用者,可以直接在AppStore下載使用。
- mozilla/firefox-ios:Swift 寫的 iOS 版 Firefox。P.S. 第三方庫用到了 Alamofire, Snappy, swift-json 等,內建閱讀器還使用了 Readability。
- lexrus/VPNOn:一款駐在通知中心內的基於 Today 擴充套件的 VPN 開關應用。
- victor/whereami:一款用 Swift 語言寫的通過命令列獲得當前裝置地理位置程式。雖然很簡單,不過,實用性及學習性俱佳。
- Ahmed-Ali/RealmObjectEditor:Realm 資料庫 Swift 版開源編輯器。提供針對實體,屬性及關係的編輯功能,完成後可以將實體結構匯出為 Swift, Objective-C 或 Java 類模型。非常實用。
- jpsim/DeckRocket:在相同 WiFi 網路環境內,通過 iPhone 控制並播放 Mac 中的 PDF 文件。ft 編譯器崩潰的測試用例。這是一個瘋狂又非常有意義的開源專案。可以定期關注一下。P.S. 該開源專案作者最新提示:Xcode 6.3 beta 與 Swift 1.2 已修復了其已發現編譯器崩潰級缺陷的 83%。
- Carthage/Carthage:更簡單的方式來管理 Cocoa 第三方框架。有了 CocoaPods 為何還要使用 Carthage,作者在 README.md(中譯) 已經做了充分說明。
- artsy/eidolon:藝術品拍賣的投標亭平臺。作者提供了一個很勵志的開發故事:從商業創意到最終實現。心路歷程從不開源到開源,從 Objective-C 到 Swift(去年夏天的事,現在當然是 Swift),以及選擇時髦的反應式程式設計框架 ReactiveCocoa……
- mortenjust/androidtool-mac:“一款用 Swift 寫的可在 Mac 上使用的 Android 工具, 支援一鍵截圖, 視訊錄製, APK 安裝等功能”。
- lexrus/JSCoreDemo:“演示了一下怎樣在 Swift 裡用 JavaScriptCore 把原生功能橋接給 JS 用,程式碼少很容易理解”。簡單、易懂的基礎演示程式碼。P.S. 希望進階學習的同學,這裡有一個完整專案供參考 RichEditorView:基於 HTML 5 的可定製富文字編輯器元件及示例。
- beltex/dshb:OS X 系統狀態(CPU、電池、記憶體、溫度感測器、風扇及雜項)監視器應用。每秒重新整理文字介面,極低系統開銷。
- nscoding/sleep-osx:在 Spotlight 中輸入 sleep 即休眠你的 Mac。實現特別簡單,幾行程式碼而已。
3. 專案評測
- 【Workflow 測評】Workflow 是款什麼軟體?(作者:@JailbreakHum):”除了聖誕降價以外最近最火的軟體話題應當是 #Workflow# 了。如果你沒接觸過此類軟體,或許會納悶它有何魅力。我們針對這款軟體的測評系列的第一篇就是來向你概述它是什麼軟體的,所以文中給出大多是基本知識,不過相信也會給老手一定的啟發。”
相關工具
1. 開發工具
- Xcode 6 beta下載:蘋果應用整合開發環境。支援 C/C++, Objective C, Swift 等。不用購買開發者計劃,直接下載。
- Textmate:Mac OS X 上一個可高度自定義的編輯器,尤其在我想做出一個快速改變但又不想等待 Xcode 載入的時候。該工具目前已經開源
- Mou:OS X 上一款 Markdown 的編輯器。非常適用於編寫自述檔案、變更日誌以及其他方面的內容。作者:羅晨
- Sublime Text ($):Mac OS X 上另一款非常受歡迎的輕量級,可高度自定義的編輯器。
- RunSwift:正在猶豫是否入手蘋果電腦開始一段 Swift 程式設計旅程的同學們,或僅僅為了試驗一段簡單 Swift 程式碼又懶得開啟 Xcode,可以試試這款 Web 版 Swift 編譯環境 RunSwift。
- InfinitApps - Bezel:“嫌 Xcode 6 目前提供的 Watch 模擬器不夠直觀?Bezel 是一個用於視覺預覽 WatchKit 所開發程式效果的小工具,前提是你安裝了 xScope 軟體(Mac端)或 xScopeMirror(iPhone端)。 By @WatchKit開發”
- Mark