Home

事件传递及响应链

试想一下假如你是一台手机📟,当有人触摸了屏幕之后,你需要找到他具体触摸了什么东西,他可能触摸是一个按钮,或一个列表,也有可能是一个一不小心的误触,你会设计一个怎么样的机制和系统来处理呢?假如有两个按钮重叠了,或者遇到在滚动列表上需要拖动某个按钮的情况,你设计的机制能正常的运作嘛?在 iOS 中系统通过 UIKit 已经为我们设计好了一套方案,也是本文浅谈的内容: iOS 中的事件传递及响应链机制。

Responder Chain

Read more

内存安全

一般来说,Swift 会阻止代码中的不安全行为。例如,Swift 会保证变量在被使用前已经初始化,在释放某变量后其内存也会变得不可访问,以及检查数组索引是否存在越界错误。

Swift 还通过要求修改内存中位置的代码具有对该内存的独占访问权,来确保对同一内存区域的多重访问不会产生冲突。由于 Swift 会自动管理内存,因此大多数时候你根本不需要考虑内存访问的问题。然而,了解什么地方会有潜在的内存冲突发生也是很重要的,这样你就可以避免写出对内存访问有冲突的代码。如果你的代码中确实包含冲突,则会出现编译时错误或运行时错误。

Read more

关于 Storyboard 的一些小技巧

用了 Storyboard 很久了,在这记录一些使用 Storyboard 时的一些小技巧和小问题。主要内容有:Unwind Segue、@IBInspectable、Storyboard Reference 以及 Container View。

Read more

圆角的处理

原文出自 AsyncDisplayKit (现在叫 Texture )文档中的一篇关于圆角的文章:Corner Rounding。主要介绍了使用原生 .cornerRadius 的缺点,以及为什么会导致性能损失的原因,另外描述了在不同的情况下,设置圆角的最佳策略,最后给出了 Texture 中的调用方式。

Read more

自定义切换白天黑夜的 UISwitch

前段时间在做自己 App 适配 Dark Mode 的时候看到了一个Procreate的动画教程以及该视频简介中的灵感来源,觉得还挺有意思的,想着复杂的东西我做不出来做个这个总可以吧嘿嘿嘿,于是准备仿照风格着手实现一下。以下是我实现的效果,左侧是白天,右侧是黑夜。

Read more