Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何仅为一个特定修改器更改应用动画?_Swift_Macos_Swiftui - Fatal编程技术网

Swift 如何仅为一个特定修改器更改应用动画?

Swift 如何仅为一个特定修改器更改应用动画?,swift,macos,swiftui,Swift,Macos,Swiftui,如何仅将.animation应用于.offset,同时保持其他修改器更改不受其影响。在偏移量之后添加.animation,也会对字体大小的更改设置动画 还尝试为上面的修改器放置.animation(nil),但是,它也会停止设置动画的偏移。由于ZStack包含不同的条件渲染DynamicText,动画修改器还将在内容更改之间应用淡入淡出过渡,这是我想要避免的 // Main view var body: some View { GeometryReader { geo in

如何仅将
.animation
应用于
.offset
,同时保持其他修改器更改不受其影响。在偏移量之后添加
.animation
,也会对字体大小的更改设置动画

还尝试为上面的修改器放置
.animation(nil)
,但是,它也会停止设置动画的偏移。由于
ZStack
包含不同的条件渲染
DynamicText
,动画修改器还将在内容更改之间应用淡入淡出过渡,这是我想要避免的

// Main view
var body: some View {
    GeometryReader { geo in
        VStack {
            DynamicText()
        }
        .animation(nil)
        .frame(height: geo.size.height)
        .offset(y: self.viewModel.offset ? 5.0 : 0)
        .animation(.default)
    }
}

提供的快照是不可测试的,所以只需考虑一下,尝试明确地将动画限制为偏移值,如

var body: some View {
    GeometryReader { geo in
        VStack {
            DynamicText()
        }
        .frame(height: geo.size.height)
        .offset(y: self.viewModel.offset ? 5.0 : 0)
        .animation(.default, value: self.viewModel.offset)     // << here !!
    }
}
var主体:一些视图{
GeometryReader{geo-in
VStack{
动态文本()
}
.框架(高度:地理尺寸高度)
.偏移(y:self.viewModel.offset?5.0:0)

.animation(.default,值:self.viewModel.offset)//是否尝试在
DynamicText()上使用
.animation(nil)
var body: some View {
    GeometryReader { geo in
        VStack {
            DynamicText()
        }
        .frame(height: geo.size.height)
        .offset(y: self.viewModel.offset ? 5.0 : 0)
        .animation(.default, value: self.viewModel.offset)     // << here !!
    }
}