如何用 UIKit Dynamics 进行碰撞检测

2017-09-07
阅读 6 分钟
5.4k
用 UIKit Dynamics 可以让指定对象具备碰撞行为。动态的项目能相互碰撞或者和任何指定的边界碰撞。在本节教程中,将学习创建自行一的边界,随机地让一些方块下落到边界上。本节教程使用的是 Xcode 8.3 和 iOS 10.3。

Swift 周报 #76

2017-07-27
阅读 3 分钟
3.7k
除了 Merge 之外,总共有 39 个作者 push 了 156 个 commit 到主分支,所有分支算起来有 284 个 commit。在主分支,401 个文件被修改,增 12589 删 9215 …

如何检测摇一摇手势

2017-07-26
阅读 2 分钟
4.7k
iOS 设备可以检测摇一摇手势,在本节教程中,我们将学习如何检测摇一摇手势,检测到该手势后,更新 label 的文案。本节教程使用的是 Xcode 8.3 和 iOS 10.3。

iOS 教程:属性字符串

2017-07-17
阅读 3 分钟
2k
属性字符串(Attributed Strings)可以为文本赋予各种各样的属性,还能一次给(部分)文本赋值多个属性。在本节教程中,将学会给 label 文本里的每个单词各设置不一样的样式。本节教程使用的是 Xcode 8 和 iOS 10。

Swift 周报 #73

2017-06-12
阅读 3 分钟
3.5k
这周的事情很多!今天是 WWDC 2017 的最后一天,Swift 4 随着 Xcode 9,一起放出了开发者公测版。Xcode 和 Swift 都有好几个重大的改进和新的功能 — 这个版本真的很棒。整个社区的反响都很正面。恭喜 Apple 的 Xcode, Swift 和开发工具组!

Swift 中的安全性

2017-06-06
阅读 3 分钟
4k
作者:Soroush Khanlou,原文链接,原文日期:2017-04-05译者:Doye;校对:walkingway;定稿:CMB Swift 是一门注重安全性的语言,如Swift官网的关于页面中所言 Swift 是一门通用编程语言,采用现代化的方法来保证安全性与性能,套用软件设计模式。 还有它的说明 安全性:那些显而易见而又便捷的编程方法应该保证是安全...

SpriteKit 技巧之添加背景图片

2017-05-19
阅读 2 分钟
4.1k
Sprite Kit 是硬件加速的动画系统,为创建 2D 游戏进行了专门的优化。在本节教程中,将使用 Game 模板来添加一张背景图片。本节教程使用的是 Xcode 8.2.1 和 iOS 10.2。

改变状态栏的颜色

2017-05-18
阅读 2 分钟
3.1k
状态栏可以有两种外观:dark(黑色) 和 light(白色)。在本章教程中,将学习如何改变状态栏的外观。本节教程使用的是 Xcode 8.0 和 iOS 10。

Unowned 还是 Weak?生命周期和性能对比

2017-05-16
阅读 19 分钟
3.9k
每当处理循环引用(retain cycles)时,需要考量对象生命周期来选择unowned或者weak标识符,这已经成为了一个共识。但是有时仍然会心存疑问,在具体的使用中应该选择哪一个,或者退一步讲,保守的只使用 weak 是不是一个好的选择呢?

创建多个 Outlet 教程

2017-05-15
阅读 3 分钟
2.2k
为多个对象创建多个 Outlet 是比较费时费力的一件事情。而且多个对象也可能共享同一个的 Outlet。在本教程中,我们将会根据按钮的 tag 值来创建多个 Outlet。本教程使用 Xcode 7.2 作为开发工具,使用 Swift 2.1 和 iOS 9 进行构建。

Swift 简洁之道(下)

2017-05-12
阅读 4 分钟
2.2k
译者注:上面的这些翻译,个人认为只是作者为了阐述清楚代码的原理(也就是说为什么这样做能使代码简洁),而并非是每行代码都要加注释. 本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 [链接]。

在 iOS 上用 Core Image 实现人脸检测

2017-05-11
阅读 8 分钟
4.3k
Core Image 是 Cocoa Touch 框架提供的功能强大的 API,是 iOS SDK 中常常被忽视的关键部件。本教程将尝试探索 Core Image 提供的人脸识别功能,并将其应用到 iOS App 中。

你需要的大概不是 enumerated

2017-05-05
阅读 3 分钟
3.4k
Swift 标准库里最容易被滥用的就是 Sequence 的 enumerated() 函数。这个函数会返回一个新的序列,包含了初始序列里的所有元素,以及与元素相对应的编号。

如何将一个可选字符串转换为 NSString

2017-04-26
阅读 2 分钟
3.7k
McFly 问到:我在这个地方一直报错:"不能将 ·String? 变量强制转换为 NSString",而且我在 stackoverflow 上也没有找到解决方法。

手把手教你封装网络层

2017-04-25
阅读 12 分钟
4.9k
同时负责两个项目是个探索应用架构的好机会,可以在项目中试验一下已有的想法或刚学到的知识。我最近学习了如何封装一个网络层框架,说不定对你有所帮助。

Swift 简洁之道(上)

2017-04-24
阅读 5 分钟
2.3k
译者注:上面的这些翻译,个人认为只是作者为了阐述清楚代码的原理,也就是说为什么这样做能使代码简洁,而并非是每行代码都要加注释 本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 [链接]。

(Swift之路) 从这里开始

2017-04-21
阅读 2 分钟
1.9k
作者:Dominik Hauser,原文链接,原文日期:2016-04-19译者:Darren;校对:Crystal Sun;定稿:CMB 昨天有人问我, Swift 初学者应该先学什么。 问题是这样的: 我有个问题想咨询一下你, 是应该花时间学习 TDD (测试驱动开发) , 还是应该学习 Swift 和函数式编程,哪样更值得学习? 当然,我的观点会有一些偏见,因为我...

快速入门指南:使用 UIViewPropertyAnimator 做动画

2017-04-20
阅读 3 分钟
3.6k
作者:Yari D'areglia,原文链接,原文日期:2016-11-20译者:SketchK;校对:Cee;定稿:CMB iOS 10 带来了一堆非常有意思的新特性,例如 UIViewPropertyAnimator。这是一个能够改善动画处理方式的新类。 它彻底改变了我们所习惯的工作流,为动画逻辑添加了一个更为精细的控制手段。 一个简单例子 让我们看看如何创建一...

Swift 代码小抄

2017-04-14
阅读 4 分钟
1.6k
无论是你学习的第一门语言是 Swift 还是之前学过 Objective-C,在学习 Swift 的过程中,一定会感叹它真的是一门超赞的语言。但如果你不熟悉它的某些语法,就可能会被某些写法吓到。在这里我会介绍一些在写 Swift 过程中常见语法,希望你们能用 Swift 写出更简洁的代码。

Picker View 教程

2017-04-12
阅读 2 分钟
1.6k
picker view 看起来像是自动贩售机或者角子老虎机,用于展示一组或者多组数值。用户通过滚轮来选择数值,选中的值处在同一行中。Xcode 里的 User Interface 提供了 picker view 控件,展示可选的组件和行。组件就是滚轮,有很多行,每行都有固定的 index 值。本教程使用的是 Xcode 8.3 和 iOS 10.3。

拼写检查教程

2017-04-05
阅读 3 分钟
1.6k
UITextChecker 对象可以用来对一个字符串进行拼写检查,在这篇教程里面我们将在一个 Table View 里面展示一些单词。当单词被选中的时候,会被进行拼写检查,拼写正确的背景将会变成绿色,否则将会变成红色。本教程在 Xcode 7.2 和 iOS 9 环境下进行。

保护 Equatable 的实现

2017-04-03
阅读 8 分钟
3k
作者:Ole Begemann,原文链接,原文日期:2017-03-08译者:Cwift;校对:walkingway;定稿:CMB 假设你有一个结构体: {代码...} 并且让其遵守 Equatable: {代码...} 实际的效果满足预期: {代码...} Equatable 的一致性是脆弱的 不幸的是,同我在 上一篇文章 中讲到的枚举的例子一样,这种方式实现的 Equatable 的一...

为什么不要在枚举和 Equatable 中使用 default case?

2017-03-21
阅读 3 分钟
2k
作者:Ole Begemann,原文链接,原文日期:2017-03-06译者:Cwift;校对:numbbbbb;定稿:CMB 假设你有一个 Swift 的枚举: {代码...} 你希望它遵守 Equatable 协议。由于该枚举具有关联值,必须手动添加,所以需要实现 == 函数: {代码...} 这里处理了参数类型相同的两种情况,比较类型不同时会执行 default case 并返...

语法的集合?协议可没那么简单

2017-03-10
阅读 4 分钟
1.3k
有一些人,比如 Xiaodi Wu 和 Dave Abrahams,提出了一些非常好的论据来反对这个观点。在这里我再次重复一次这些观点,因为我觉得相比这个具体的话题,他们所讨论的内容有着更加广泛的意义。

结构体与 NSCoding

2017-03-09
阅读 4 分钟
1.6k
要使用 NSCoding,必须遵循 NSObjectProtocol 这个类协议,因此结构体无法使用。如果我们想对某些数据进行编码,最简单的方式是将它们作为一个类来实现,并且继承自 NSObject。

为何 String.CharacterView 不是 MutableCollection

2017-03-06
阅读 3 分钟
2.4k
在 上一篇文章 中,我讨论了为什么 Set 和 Dictionary 不能遵守 MutableCollection 和 RangeReplaceableCollection。今天轮到 String.CharacterView 了。

在 Swift 应用里构造和修改 NSURL

2017-02-22
阅读 4 分钟
2.2k
许多应用程序都有访问文件的需求。也许是应用 bundle 或文件系统的文件,又或许是网上的资源。在代码里需要调用某些方法来指向这些文件。对于 Apple 平台而言,基本上只有两个选择:使用 String 或 NSURL。

Swift:漂亮的 print() Pt.2

2017-02-21
阅读 4 分钟
1.7k
在之前的文章中,我们讨论了在输出日志中使用 emojis 的好处,它可以帮助我们更好的去消化和吸收大量的信息,不过我提供的实现方式并不怎么样,没有足够多的例子供你将其应用在自己的代码中。

不是所有可变的集合都叫做 MutableCollection

2017-02-20
阅读 4 分钟
3.7k
Collection 协议是 Swift 集合类型的根基。除了 Collection,标准库还提供了另外四个协议,用来扩展集合类型的功能。这些协议改进了 Collection —— 遵守任何一个协议的对象也必须遵守 Collection。

枚举的非连续原始值

2017-02-18
阅读 1 分钟
2.3k
Brennan Stehling 近来发现了一个我一直不知道的 Swift 神奇特性。众所周知,可以创建一个这样的原始值 (raw value) 枚举:即每个枚举成员的原始值皆可以自动递增。