动画影响整个层次结构

问题描述

我有一段非常简单的代码,可以在 swiftui 静态预览中正确显示,并在 iOS 中正确运行。然而,当我选择 macOS 目标和实时预览时,整个层次结构从顶角反复向下移动。

这是我正在试验的代码(使用 Xcode 版本 12.3 (12C33)):

//
//  brokenAnimation.swift
//

import SwiftUI

struct brokenAnimation: View {
    @State var phase: CGFloat = 0
    
    var body: some View {
        ZStack(alignment: Alignment.topLeading) {
            Rectangle()
                .fill(Color.blue)
                .frame(width: 1200,height: 1200)
            Rectangle()
                .stroke(style: strokeStyle(linewidth: 2,lineCap: .butt,lineJoin: .round,miterLimit: 1,dash: [5],dashPhase: phase))
                .frame(width: 100,height: 100,alignment: Alignment.topLeading)
                .foregroundColor(.white)
                .onAppear {
                    withAnimation(Animation.linear.repeatForever(autoreverses: false)) {
                        self.phase += 10
                    }
                }
        }
    }
}

struct brokenAnimation_Previews: PreviewProvider {
    static var previews: some View {
        brokenAnimation()
    }
}

我的期望是它应该从屏幕的左上角 (1200x1200) 绘制一个纯蓝色矩形。然后它应该在它的顶部绘制一个白色矩形,也在左上角,大小为 100x100。白色矩形用虚线描边,应该为其相位设置动画 - 我期待在虚线矩形上看到爬行蚂蚁效果

但是,当我为 MacOS 选择“实时预览”时,它会生成一个带有预期蓝色矩形和白色虚线的窗口。但是整个ZStack从左上角反复向下移动。

这是 macOS 上 swiftui 中的错误吗?还是我在这里遗漏了什么?

如果我使用 vstack 而不是 ZStack,我会观察到类似的行为。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...