GitHub - moonlightlong/SwiftGuide: 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排。

3. Using Swift with Cocoa and Objective-C

7. iOS Human Interface Guidelines

1. 官方教程

2. 快速入门

3. 教程精选

  • 中译精选

    译文 | 译者 |原文 | 来源 ------------ | ------------ | ------------- | ------------- Swift 自适应布局(Adaptive Layout)教程(一)|@DevTalking|Beginning Adaptive Layout Tutorial|raywenderlich 如何使用 iOS 8 的虚化效果|@CocoaChina|iOS 8 Visual Effects Tutorial|raywenderlich Web 工程师和设计师必须要知道的 iOS 8 的十个变化|@罗罗磊磊|iOS 8 and iPhone 6 for web developers and designers: next evolution for Safari and native webapps|mobilexweb 如何在 Swift 中创建 Action 扩展|@DevTalking|Action Extension in Swift|nsnerd.co iOS8 Day-by-Day :: Day2 :: 分享应用扩展|@DevTalking|iOS8 Day-by-Day :: Day 2 :: Sharing Extension|shinobicontrols Swift 的强大之处|李子轩|The Power of Swift|objc.io 结构体和值类型|@Onetaway|A Warm Welcome to Structs and Value Types|objc.io Swift 方法的多面性|@唯木念|The Many Faces of Swift Functions|objc.io Swift 的函数式 API|@请叫我汪二|Functional APIs with Swift|objc.io Playground 快速原型制|Programmer.Du|Rapid Prototyping in Swift Playgrounds|objc.io 在 Swift 中自定义下标|@DevTalking|Custom Subscripts in Swift|codingexplorer 如何用 Swift 语言构建一个自定控件|@BeyondVincent| How To Make a Custom Control in Swift | raywenderlich| UIKit 重力学(, ) |@DevTalking| UIKit Dynamics Tutorial in Swift |raywenderlich Swift 中的延迟加载|@Swiftist|Lazy Initialization with Swift|mikebuss The Swift Programming Language - 实验项目相关解决方案|@CocoaChina|The Swift Programming Language: Solutions to Experiments|swiftcast.tv

  • S008 - iOS 应用基础: 教程对于最基础的 UI 编程讲得特别细,时有反复强调 Swift 基础特性。个人感觉这个适合无 iOS UI 编程经验的同学,甚至也适合无 Swift 基础的同学。By @赵哲A

  • Getting Your App Ready for iOS 8:让你的应用程序适配 iOS 8,这篇文章总结的比较完整。 By @Janselz

  • VectorPDFSupportTest:"Xcode 6 支持 vector PDF 来支持多尺寸的图片,虽然是伪矢量图,但我还是写了点东西来把这东西说清楚。" By @你全家都快到碗里来

  • nettlep/learn-swift:学习《Swift Programming Language》的同时,配合运行这些 playgrounds,对于快速掌握 Swift 最合适不过了.

  • Swift Reference Playground/Swift Operators Playground:"Swift Reference is a handy playground file that can be used when you are starting to learn swift.It covers the basic syntax definitions and different ways to use" 初学 Swift 语言的同学一定先玩玩这个,可以让您更快感性的了解 Swift 语言语法、操作符及语言新特点(代码涵盖地比较完整)。

  • ShinobiControls/iOS8-day-by-day:追剧 iOS 8 开发,文章几乎篇篇带示例项目。iOS 8 开发者进阶必备!

  • Alamofire - 1. 基础教程2. 进阶教程(译者:@星夜暮晨):Alamofire 项目是Mattt Thompson 为其著名的 AFNetworking 采用 Swift 语言重写的网络基础库开源项目。中译教程原文来自 Ray Wenderlich - 1. Beginning Alamofire Tutorial, 2. Intermediate Alamofire Tutorial

  • VirtualGS 教程(By @林泰前):几十年的老程序员,资深的 iOS 开发工程师,把自己儿子培养成苹果应用商店最年少的应用开发者,哪里能找到这样优质的编程老师? 教程包括《How to》系列连载和《图形编程》示例项目

  • Swift Weather APP:“林永坚老师将带领大家使用 Swift 语言开发一个完整的天气 iOS APP。同时大家能够学习到 Interface Builder、CocoaPods、Core Location、AFNetworking 的使用,以及如何通过 Swift 调用 Objective-C 组件”

  • 使用 Swift 开发 iOS8 App 实战 :实战学习是最有效的编程学习方法,推荐@林永坚老师的实战视频。教程代码:1.ChineseZodiac, 2. LoveFinder, 3. BeautyGallery

  • Developing iOS 8 Apps Using Swift (I) – Animations, Audio, and Custom Table View Cells:"这个教程大概 7 篇 blog,一步步讲解了一个『itunes music search app』的制作对于 async http, api delegate, 异步图片,动画,代码分层,interface builder 都做了清晰的介绍。" By gaohailang

  • Replicating Twitter’s bird zoom startup animation (in Swift!) (源代码):这是一个有关用 Swift 开发简单动画效果的编程示例,示例开发灵感来源于近期的 Twitter iOS 版小鸟启动动画。

  • WWDC 2014 详解 OSX/iOS8/Swift 语言:"极客学院全国首发课程,详解 OSX/iOS8 新特性/崭新编程语言 Swift!极客学院团队通宵录制、上传,只为在这一刻把最新最实战的课程呈现给开发者"

  • 从零开始学Swift计时器App开发源代码):"通过完成此教程,我对 Swift 语言的理解也更进了一步。Swift 是一门全新的语言,作为开发者,我们需要不断加深对这门语言的理解,并灵活使用语言提供的特性来编程。..." by @李洁信

  • 如何用 Swift 写 UIDynamic:如何用 Swift 写 UIDynamic。代码虽短,功能性完整。可读性也很赞!By @戴铭

  • Swift 如何检查系统版本:介绍使用 Swift 语言检测操作系统版本的方法。 译者:@pockry 原文:Swift System Version Checking 作者:Mattt Thompson

  • How to build a nice Hamburger Button:小小的按钮,无论在设计上,还是代码上,都进行了精雕细琢。期待作者能尽早发布更完整的 Hamburger Buttons。源码:robb/hamburger-button

  • Hamburger Button Animation:又一个实用的 Hamburger Button。另外,看了作者的博客,感觉他对 iOS Animation 编程非常有经验,强烈推荐关注。源码:fastred/HamburgerButton

  • 在 Playground 中添加说明文档:教你如何在 Playground 中添加说明文档。By @DevTalking

  • 使用 Swift 和 AVOSCloud 构建 iOS 应用:"使用 AVOSCloud SDK 和 Swift 构建 iOS 应用 | AVOS Cloud Blog" By @AVOS江宏 | 这就是业界的速度,先机才是致胜法宝。

  • 为 iPhone 6 设计自适应布局) :"当你们学习完这篇文章后,你们应该会比较自如的使用 storyboard、constaints、size classes 这三个 Apple 在 Xcode 里提供的工具,去探索和构建巧妙的自适应布局。" 译者:@DevTalking 原文:ADAPTIVE LAYOUTS FOR iPHONE 6

  • iOS App 集成 Apple Pay 教程:"Apple Pay 还给开发者带来了处理支付的新渠道,用户将期望在应用中使用它,因为它将验证和交易极端简化,仅需手指轻轻一触即可完成。如果应用里面有涉及到交易,开发者很有必要集成Apple Pay。那么如何将 Apple Pay 功能集成到你的应用里呢?" 可惜 Demo 是 Objective-C 版本的。 译者:@pockry 原文:Integrating Your iOS App with Apple Pay

  • WWDC 2014 Session 笔记 - 可视化开发,IB 的新时代:"通过一个简单例子介绍了 Xcode 6 的 IB 中自定义 view 的基本使用。" 作者:@onevcat

  • 传感器框架(CMDeviceMotion):一篇关于 CMDevice​Motion 类解读及使用方法的文章。对于 iPhone 三轴陀螺仪和加速感应器,以及M7/M8协处理器,核心运动框架(The Core Motion framework)提供了完整的 API 支持。然而文章更重要的意义是启发开发者重视感应器,并结合场景开发新颖好玩的应用。原文:CMDeviceMotion

  • 如何在 Swift 中运用Text Kit 框架(一):“现在 iOS 8 发布了,在文本渲染方面在延续了之前强大功能的基础上,又提升了其易用性。” 译者:@DevTalking 原文:Text Kit Tutorial in Swift

  • Swift 中的函数柯里化(Function Currying):柯里化提供了强大的动态函数创建方法,也是动态语言重要组成部分。译文有关柯里化使用方法及应用场景讲解的很清楚。"Swift 的各种特性已经被很多人研究过,但有一个特性只有较少人提及,那就是函数柯里化。本文将试图覆盖柯里化函数的基本知识点和一些可能的使用场景,希望对你了解 Swift 中的函数柯里化有所帮助。" 译者:@pockry 原文:《Swift Function Currying》

  • 使用 Swift 构建自定义(且“可设计”的)控件:"使用 Swift 构建自定义(且“可设计”的)控件。喜欢别人发布的自定义控件?那设计并实现自定义控件需要几步呢?只要三步。读了本教程,你就可以实现任何你想要的自定义控件。" 译者:@nixzhu,原文How to building a custom and designabl control in swift

  • UIPrint​Interaction​Controller:文章介绍了如何格式化打印内容及相关打印定制技巧或控制技术。或许,在如今移动及数子化时代,打印已经被许多人所忽视。无论如何,对于传统行业,需求仍然是切实存在的,因此,这是一篇难得好文章。

  • 在 iOS 8 SDK 中使用 Touch ID API - Part IPart II:译文详述了如何在一款笔记编辑应用程序中集成 iOS 8 SDK 中 Touch ID API,包括上下两个部分,在开发过程中使用了 Swift 语言。

  • Core Data 版本迁移经验总结:版本升级是必备经验。文章或许还不够全面,但都是作者点滴经验,非常难得。对于进阶开发的同学文档《Core Data Model Versioning and Data Migration Programming Guide》是必读的,参考文章《自定义 Core Data 迁移》也值得收录。作者:@Chun_iOS

  • objc.io - Games 专题(译文):对于致力于游戏开发的同学,相信本专题就是年前最大的福利了。而对于未开始游戏开发或其它领域开发的同学,这个专题所涵盖的人机交互设计,GPU 编程,基于 OpenGL 的 3D 图形及动画编程,高效多点互联编程,多媒体音效编程同样是不可多得的学习盛宴。

  • Introduction To SceneKit(Part I, Part 2):从最简单的示例引导式介绍 SceneKit 的使用及更高级功能编程实战。这是一篇非常用心、专业的 SceneKit 教程。P.S. SceneKit 是官方提供给开发者编写3D游戏及 3D 互动应用功能强大的编程框架及类库。By WeHeartSwift.com

  • NSHipster - NSUndo​Manager:本文分别结合 Swift/Objective-C 代码示例讲解 UndoManager 的使用。

  • 怎样在 Xcode 6 中使用矢量图形:"苹果在 Xcode 6 当中给我们带来了一些很棒的工具用以管理图形资源,它们可以帮我们从容的应对未来的 iOS 设备,例如基于 PDF 图形文件自动生成各种规格的图片资源..." 来源:@BeForWeb 译者:@C7210 原文:Using Vector Images in Xcode 6

  • 5 Can’t-Miss Lessons from the Functional Swift Conference:娜塔莎博主继续不遗余力的推荐的函数式编程。

  • Mattt Thompson - Cocoa 之死:"Cocoa,作为一个包含大多数工作在 Objective-C 语言上必要的基本库的集合,和 CoreData,已经成为了 Objective-C 的事实标准。而 Cocoa Touch 基本上就是用 UIKit 更换掉 AppKit 的 Cocoa,而且它也经常用来和Cocoa放在一起,来指代在iOS上的工作的系统框架。" 来源:@CocoaChina,译者:xiaoying,原文:The Death of Cocoa

  • Mattt Thompson - 新年之际,盘点一些 APP 开发技巧:盘点了来自不同开发者的编程技巧或 Tips,相比以往 Mattt 文章,本文内容或许略显琐碎,不过,做为学习参考,尤其还能发现几位有经验 iOS 开发者还是很值得的。原文:Reader Submissions - New Year's 2015,作者:Mattt Thompson,译者:培子,校对蓝魂

  • 在 iOS 8 中使用 Handoff:“本文通过一个包含不同功能的联系人示例工程详细讲述了如何进行 Handoff 开发,以及需要注意的地方。By @CocoaChina”。来源:AppCoda ,译者:@_HuaQiao

  • 在 iOS8 创建一个交互性强的本地通知:“iOS 8里,通知加入了新特性。开发者可以指定用户可触发的具体的动作(actions),而且甚至不用启动App也可以处理这个通知。本文详细讲解了如何开发一个互动性强的本地通知,带示例项目。” 原文:Creating Interactive Local Notifications in iOS 8 。为方便同学们实验使用,译者 @iBenjamin_Go 还将 DropBox 上的示例移至 GitHub:ShoppingAlertFinal

  • AppCoda - 理解 iOS 8 中的 Photo Editing Extension:“我们一起来看看怎样制作一个 Photo Editing Extension。由于我们的关注点在创建应用程序扩展而不是写一个完整的应用,我已经创建了一个你们可以下载并且一路跟着做的上手项目”。原文:Understanding Photo Editing Extensions in iOS 8,作者:Joyce Echessa,译者:@X140Yu

  • NSHipster - Java​Script​Core 中译文原文):文章介绍了在 Swift 中使用 Javascript 的方法和技巧,它对于 iOS 和 Web 应用工程师有两料价值。作者 Nate Cook 是一位独立的 Web 应用开发者及非常活跃的 Swift 博主。前些日子,他还创建了一个自动生成的 Swift 在线文档网站 SwiftDoc.org

  • Swift 云编程功能:“学 Swift 语言一定需要苹果设备或者虚拟机吗?NO,现在只要浏览器就可以练习 Swift 啦。看小编用 Swift 语言在线输出"Hello,World",是不是很神奇?”

  • Stanford 公开课 - Developing iOS 8 Apps with Swift(字幕翻译组):“Stanford 的 iOS 8 公开课在近日发布了。寻找一些想提高自己,愿意为大家做贡献的同学一起翻译字幕。有意向可以加入 QQ 群:277542197。即使英语不好,也有需要你来完成的任务。”

  • 怎样更优雅地处理网络返回数据:“我写了新文章《Swift--怎样更优雅地处理网络返回数据》( 分享自 @简书 ) 竟然第一次写技术文章,想想都忏愧……希望以后能坚持下去……” 作者:@日光镇 | P.S. 站在解决问题的角度,步骤清晰,目标明确。一次很好的开始。

  • objc.io - #21 Camera and Photos中译版 By #objc中国#):这一期主要议题包括相机工作原理,图片格式,iOS 上的相机捕捉,照片框架,照片扩展,Core Image 介绍,GPU 加速下的图像处理,GPU 加速下的图像视觉,基于 OpenCV 的人脸识别。很精彩,不容错过。

  • objc.io - #22 iOS at Scale中译版 By #objc中国#):本期通过 Omni,Artsy,Square,Dropbox,Facebook 等一定规模 iOS 开发团队的故事,基于不同侧重(开发流程、开源管理、发布管理流程、代码审查流程、组件化思想等角度)分享项目管理经验。

  • 玩儿转 Swift:粗略听了一下,发现@刘宇波bobo的这套 Swift 基础视频课程也比较适合初学者。PPT 及 示例代码显示很清晰。

  • Swift Documentation:“对于开发者来讲,良好的代码结构及组织是其引以为豪的事。干净、一致的代码习惯,对于编译器并无所谓,但程序字里行间可以代表个人符号、或与同伴的差异”。两位博主的倾情合作,有了这篇美文。来源:NSHipster

  • NSHipster - IBInspectable / IBDesignable:通过两者的配合,配置 NIB,XIB 或 storyboard 实例中的键值,所见即所得修改界面元素显示属性。尽管这样开发方式对于程序员来讲,并非那么地不可或缺。然而,对于设计师或美工来讲,则可以更多地参与界面开发,以有效提高实施效率。

  • Swifty - Learn to code in Swift!:“这款叫 Swifty 的 iOS 应用可以模拟 Swift 代码环境,不知道实际效果如何? By @JailJT_MBlog”。虽然只是基础语法为主。不过这款应用能首先切入移动端教授 Swift 编程知识,还是很有意义的项目。

  • diwu/LeetCode-Solutions-in-Swift:LeetCode 的 Swift 语言版解题方案。需要面试人的同学可以收录,被面试的同学则要补补功课了。P.S. 虽然相对于 LeetCode 题库完成比例还不高,不过,正好可以学着用 Swift 语言练练手。作者:@diwup

  • lexrus/LeetCode.swift@汤圣罡 版 LeetCode 算法解题方案。

  • objc.io #23 Video - Core Image 和视频:本文介绍如何通过 Core Image 框架结合视频信息进行应景渲染,从而让视频表现出各种奇妙效果。译者:@高考这件尛事 P.S. 上上期(#21 Photo)着重于介绍图片的处理,本期又专注于介绍视频处理。objc 真是一个懂开发者的好网站。

  • Auto Layout 使用心得(1. 初体验2. 实现三等分3. 自定义 cell 并使用 Auto Layout;4. 22 行代码实现拖动回弹5. 根据文字、图片自动计算 UITableViewCell 高度):这是我见过最为细致入微介绍自动布局及快速入门的中文教程。作者:@吕文翰_JohnLui

  • 再造 “手机QQ” 侧滑菜单(1. 实现侧滑效果2. 高仿左视图3. 视图联动):通过简单直接的代码,实现了完整的动画效果。作者:@吕文翰_JohnLui,示例项目:SwiftSideslipLikeQQ

  • 在 iOS 应用中添加广告-添加 iAD 广告添加admob广告:“实用教程。学自YouTube(一个神奇的网站)”。P.S. 虽然个人不喜欢应用内插广告,不过,作为一个服务类微博,不能任性。

  • Searching on a Map View in iOS8 with Swift:地图上搜索指定区域内的酒店和博物馆并显示的教程及示例。来源:iOScreator,附:完整示例。 P.S. 话说 iOScreator 教程示例库真多,不信你可以移步这里看看

  • Realm 数据库基础教程:“Realm 是一个跨平台的移动数据库引擎,于 2014 年 7 月发布,准确来说,它是专门为移动应用所设计的数据持久化解决方案之一。Realm 可以轻松地移植到您的项目当中,并且绝大部分常用的功能(比如说插入、查询等等)都可以用一行简单的代码轻松完成”。来源:Ray Wenderlich,译者:@星夜暮晨

  • Swift 的响应式编程:文章通过在使用 MVC 以及 MVVM 中发现代码繁杂的弊病,引出响应式编程解决方案,并通过解读 ReactiveCocoa,让读者进一步理解响应式编程所带来的好处。原文:Reactive Swift,译文来源:@开发技术前线,译者:@MrSimp1e

  • iOS 后台模式开发指南:“这个教程会教你在什么时候怎么去用最常用的一些后台操作... 在本教程中你将建立一个关于简单标签应用的工程,来探索从连续播放视频到周期性的获取更新内容的四种常见模式”。原文来源:Ray Wenderlich,译文来源:@开发技术前线,译者:@MollyMmmmm

  • iOS8 使用 iCloud:“对于开发者来说,如何用适当的方式来存储应用程序数据是一个比较重要的问题。 毫无疑问,任何应用都或多或少需要存储一些数据。对于一般的应用程序来说,被保存的数据各不相同,大部分时间都被存储在本地以便再次在相同的设备运行该应用程序。尽管这不是是唯一的选择”。原文来源:AppCoda,译者:@HarriesChen

  • Grand Central Dispatch 基础教程:Part 1/2Part 2/2:“尽管 Grand Central Dispatch(以下简称为 GCD)已推出一段时间了,但并不是所有人都明白其原理;当然这是可以理解的,毕竟程序的并发机制很繁琐,而且基于 C 的 GCD 的 API 对于 Swift 的新世界并不是特别友好”。来源:Ray Wenderlich,译者:@Ethan_Joe

  • UIKit Dynamics 和 Swift 教程:抛掷视图 (Tossing Views):“在这篇UIKit Dynamics教程中,你将学会如何通过添加手势,用一种很自然的方式将视图抛掷出屏幕的显示区域”。译文来源:@开发技术前线,译者:samw00

  • UIStackView:“iOS9 新增的 UIStackView 官方文档翻译”。译者:@潇湘TT

  • 玩儿转 Swift:“随着Swift最新1.2版本的出炉,大家期待已久的《玩儿转Swift》系列课程也将迎来暂时的终点。在课程的最后一章,我们将随波波老师全面了解Swift 1.2 的新特性:简洁的if-let、全新的Set结构、as和OC-bridge等内容。一起来学习吧!”。来源:@慕课网

  • 4. 开发技巧

    5. 相关文档

    1. 实用类库

    2. 示例项目

    3. 完整项目

    3. 项目评测

    1. 开发工具

    2. 代码管理

    3. Xcode 插件

    4. 管理工具

    5. 调试工具

    6. 参考文章

    开放平台相对于 Swift 语言更具战略意义,这是开发者不得不面对的挑战。也是苹果新一代创新应用的催化剂。通过 Extension 达成应用之间的协同及通讯,这是对生态内应用开放的基础。让我更期待的是,Extension 在 Safari Action 上实现及支持,这是实现平台开放及跨平台应用最简单直接的方案。

    1. 文档

    2. 示例项目

    3. 实用资源

    1. 文档

    3. Watch 教程

    4. Watch 项目

    5. 媒体文章