我们预览下今天要实现的 3D scroll 效果。学完本教程后,你就可以在你的 App 中把这种 3D 效果加入任何自定义的 SwiftUI 视图。下面我们来开始本教程的学习。 入门 首先,创建一个新的 SwiftUI 视图。为了举例说明,在这个新视图中,我会展示一个有各种颜色的矩形列表,并把新视图命名为 ColorList。 import SwiftUI struct Colo...
本文中我们将学习如何使用 SwiftUI 中的 Paths 和 AnimatableData 来制作颜色切换动画。 这些快速切换的动画是怎么实现的呢?让我们来看下文吧! 基础 要实现动画的关键是在 SwiftUI 中创建一个实现 Shape 协议的结构体。我们把它命名为 SplashShape。在 Shape 协议中,有一个方法叫做 path(in rect: CGRect) ...
在 SwiftUI 中提供了一个裁剪视图形状的修饰符:clipShape,他可以将 View 以你自定义的任何 Shape 的形状进行裁剪。 例如我们有一个收藏按钮,可以使用 clipShape 将按钮按照 Circle、Capsule 的形状进行裁剪 /// 圆形按钮 Button(action: {}) { Image(systemName: "star") ...
在iOS程序中创建美观的股票图表 SwiftUI 框架在 2019 年的 WWDC 大会引入后,广受 iOS 社区欢迎。这种用 Swift 语言编写,易用的、声明式的 API 让开发者可以快速构建 UI 原型。 虽然我们能用 Shapes 协议从头开始构建 条形图,但是构建折线图就不一样了。幸运的是,我们有 Paths 这个结构体来帮助我们。 使用 SwiftUI 中的 pa...
通常我们在列表 UITableView 或者 UICollectionView 中点击 Cell 来 Push 到一个新的页面会使用对应的代理方法 didSelectRowAt,然而在 SwiftUI 中没有对应的代理属性,也没有类似的可以 push 的API,那么如何在 SwiftUI 中 push 一个 View 呢?那就是使用 NavigationLink。 在 SwiftUI 中 ...
我们热爱动画。 一方面,它们引导我们的视线,同时也是画龙点睛的一笔,增添了额外的关注点甚至一点 感情。比起静态的 UI,我们更偏爱生动形象并且能给我们反馈,可以交互的 UI。但是太多了就会造成不良的后果,所以让我们来探索一些可以给一款 app 增加恰到好处的润色的动画。 在 touchDown 时改变一个按钮的大小或颜色 我们通常在 touchUpInside 上设置点击事件,其原...
之前在UIKit中实现了这样的动画。 Github源码 通常可以在层上使用CoreAnimation,我想知道这在SwiftUI中会如何实现。 动画是SwiftUI中对我来说不容易实现的功能之一! 动画修饰符 (AnimatableModifier) 我选择将效果实现为 AnimatableModifier。该协议既继承自Animatable又继承于ViewModifier,因此我...
您好,Swift 开发者,在本文中,我想与您分享我的经验和知识,主要内容有属性包装器(Property Wrapper)的使用,以及如何简化代码并使其易于维护。我会通过几个主题对此进行说明。 在 Swift 5.1 中,Apple 引入了属性包装器,它可以让我们在属性和访问逻辑(getter 和 setter)之间设置中间层。 下面的内容是在 @IBOutlet 变量内部使用属性包装...
SwiftUI 中提供了很多“新颖”的 API 设计思路和 Swift 的使用方式,我们可以进行借鉴,并反过来使用到普通的 Swift 代码中。PreferenceKey 的处理方式就是其中之一:它通过 protocol 的方式,为子 view 们提供了一套模式,让它们能将自定义值以类型安全的方式,向上传到父 view 去。如果有机会,我会再专门介绍 PreferenceKey,但这种设计的...
在本文中,我将介绍 iOS 编程中的 MVVM 设计模式以及 RxSwift。本文分为两部分,第一部分简要介绍了设计模式和 RxSwift 的基础知识,而在 第二部分 里,有一个实现了 MVVM 和 RxSwift 的示例项目。 设计模式: 首先,我们为什么要使用设计模式呢?简而言之,就是为了避免我们的代码乱成一团,当然这不是唯一的原因,其中有一个原因是可测试性。设计模式有很多,...