ios - 使用 SwiftUI 切换切换动画
问题描述
我正在构建一个简单的设置屏幕。
当第一个设置被激活时,速度控制出现。当它关闭时,速度控制消失。
根据我对 SwiftUI 的了解,这应该会根据下面的代码自动生成动画,但它只是出现和消失。
如何使用 SwiftUI 使这个动画更好看,让它从上面的单元格向下滑动,就像在 53:00 的演示文稿中一样?
import SwiftUI
import Combine
struct ContentView : View {
@ObjectBinding var settingsStore: SettingsStore
var body: some View {
NavigationView {
Form {
Toggle(isOn: $settingsStore.settingActivated.animation(.basic(duration: 3, curve: .easeInOut))) {
Text("Setting Activated")
}
if settingsStore.settingActivated {
VStack(alignment: .leading) {
Text("Speed Control")
HStack {
Image(systemName: "tortoise")
Slider(value: .constant(10), from: 0, through: 50, by: 1)
Image(systemName: "hare")
}
}.transition(.opacity)
}
}.navigationBarTitle(Text("Settings"))
}
}
}
class SettingsStore: BindableObject {
let didChange = PassthroughSubject<Void, Never>()
var settingActivated: Bool = UserDefaults.settingActivated {
didSet {
UserDefaults.settingActivated = settingActivated
didChange.send()
}
}
}
extension UserDefaults {
private struct Keys {
static let settingActivated = "SettingActivated"
}
static var settingActivated: Bool {
get {
return UserDefaults.standard.bool(forKey: Keys.settingActivated)
}
set {
UserDefaults.standard.set(newValue, forKey: Keys.settingActivated)
}
}
}
解决方案
推荐阅读
- ios - 目标 c 中的“无法注册捆绑标识符”错误
- react-native - 图像在本机反应中显示为白色
- python - Django 模型保存表单但不显示
- javascript - Puppeteer:移除属性
- python - SQL Server 与 AWS GLUE Python 3 作业的连接
- r - 通过提取与正则表达式匹配的所有组将字符串分成列
- c++ - 通过指针对象将参数传递给参数化构造函数时的C++程序错误?
- python - 我创建了一个 venv 并尝试安装 tensorflow 1.15 但仍然出现相同的错误
- java - logstash 7.10.1:Java 问题
- javascript - 如何从 chrome-network 选项卡中的开发工具获取,