排序
动画(三) – 动画协议
SwiftUI 属性动画系统的核⼼是 Animatable 协议。这个协议可以被视图和视图修饰符所实现,它们通过该协议把可以进⾏动画的属性暴露给SwiftUI。 这个协议唯⼀的要求是⼀个 animatableData 属性,...
模式(一) – MVVM
MVVM 工作原理 MVVM - 模型、视图、ViewModel,理解 MVVM 的最佳方式是这样的:除了创建一个新类 ViewModel 负责将模型中的数据转换为视图中的格式化值之外,它与 MVC 别无二致。 MVVM 模式由三...
布局(六) – Layout 协议
Layout 协议,可以创建⾃定义的容器视图,让它们根据所编写的算法来布局⼦视图。这个协议的使用分为两步:⾸先,使⽤ sizeThatFits ⽅法确定容器的尺⼨。在该⽅法内部,我们通过⼦视图的代理,来...
动画(一) – 属性动画
在 SwiftUI 中,修改状态是唯⼀能触发视图更新的⼿段。默认情况下,旧视图树与新视图树之间的更改不会进⾏动画处理。 对那些在视图树中已经存在,且在状态变化前后属性也相应改变的视图,属性动...
语法(三) – guard
guard 语句的主要用法有以下几种: 提前返回 减少缩进级别 高Happy Path可见性 提前返回 guard 用于提前返回,如果某些先决条件未满足,则退出函数。 func giveAward(to name: String) { guard n...
iOS 其它相关知识
版本管理 Xcode 快捷键 添加 emoji:Command + Control + Space 提交代码:Command + Option + C 显示或隐藏左侧导航窗口:Command + 0 显示或隐藏预览画布:Command + Option + Return
ScrollViewReader
Scroll View Reader 让你可以访问一个名为 scrollTo 的函数。通过这个函数,你可以通过自动滚动使滚动视图中的某个视图可见。 介绍 使用 ScrollViewReader 访问 scrollTo 函数,以便以编程方式...
phaseAnimator
一个容器,通过自动循环遍历你提供的一系列阶段来对其内容进行动画处理,每个阶段定义了动画中的一个离散步骤。 具有阶段动画的弹跳 例如,前面展示的表情符号弹跳动画具有两个阶段:向上移动和...