Swiftui 无法更改@Binding的值,以及如何仅从一个切换状态设置视图动画
所以这一开始只是一个问题,但试图回答第一个问题会导致我回答第二个问题。因此,问题是:Swiftui 无法更改@Binding的值,以及如何仅从一个切换状态设置视图动画,swiftui,Swiftui,所以这一开始只是一个问题,但试图回答第一个问题会导致我回答第二个问题。因此,问题是: 我最初的问题是,是否可以通过从justfalse到true和notfalse到true来设置视图的动画。例如,在下面的代码中 图像(系统名称:isTrue?“heart.fill”:“heart”) .animation(.easeIn,值:isTrue) 第二个问题源于第一个问题,因为父视图总是将属性设置为false(也是整个视图由于其他状态属性而重新渲染),并且在重新渲染时,它总是为心脏设置动画 无法使
import SwiftUI
struct FirstView: View {
@State var isOn = false
var body: some View {
VStack {
ZStack {
RoundedRectangle(cornerRadius: 25.0)
.frame(height: 200)
Image(systemName: isOn ? "heart.fill" : "heart")
.foregroundColor(.red)
.scaleEffect(isOn ? 1.5 : 1.0)
.offset(x: 10.0, y: 10.0)
.animation(.easeIn)
}
Toggle(isOn: $isOn) {
Text("First View - Should change and animate")
}
}
}
}
struct FirstView_Previews: PreviewProvider {
static var previews: some View {
FirstView()
}
}
struct SecondView: View {
@Binding var isOn: Bool
var body: some View {
VStack {
FirstView()
Toggle(isOn: $isOn, label: {
Text(" 2nd View - Change but don't animate")
})
}
}
}
struct SecondView_previews: PreviewProvider {
static var previews: some View {
SecondView(isOn: .constant(false))
}
}
问题1
您需要一个动画,该动画根据isOn的状态而变化
//在视图上
.动画(动画,值:isOn)
//定义变量动画
动画:动画?{
伊森?动画。伊森:零
}
问题2
您已经可以使用.animation的值限制版本了。这将限制层次结构中的任何更改仅限于该绑定值中的更改。感谢您使用干净、易于复制的粘贴代码片段提出这个问题。