Animation 迅捷-奇怪的动画

Animation 迅捷-奇怪的动画,animation,swiftui,Animation,Swiftui,我有一个按钮的图像。预期的结果是,当我点击按钮/图像时,它下面会出现一个项目列表。但是,由于某些原因,图像本身会在单击时收缩。如何防止图像缩小,使项目仅填充在图像下方 struct HabitGroups: View { var imageName: String var textOverlay: String var listOfHabits: [String] @Binding var selectedHabitList: [String] @Bind

我有一个按钮的图像。预期的结果是,当我点击按钮/图像时,它下面会出现一个项目列表。但是,由于某些原因,图像本身会在单击时收缩。如何防止图像缩小,使项目仅填充在图像下方

struct HabitGroups: View {
    var imageName: String
    var textOverlay: String
    var listOfHabits: [String]
    @Binding var selectedHabitList: [String]
    @Binding var enoughHabits: Bool

    @State var showHabits = false

    var body: some View {
        VStack {
            Button(action: {
                withAnimation {
                    self.showHabits.toggle()
                }
            }) {
                Image(self.imageName)
                    .resizable()
                    .scaledToFit()
                    .frame(minWidth: 300, minHeight: 100)
                    .overlay(ImageOverlay(textOverlay: self.textOverlay), alignment: .bottom)
            }
            .buttonStyle(PlainButtonStyle())

            if self.showHabits {
                ForEach(self.listOfHabits, id: \.self) { habit in
                    AddHabitButtons(habit: habit, selectedHabitList: self.$selectedHabitList, enoughHabits: self.$enoughHabits)
                }
            }
        }
    }
}


您必须在图像下方添加许多项目,以便在不调整屏幕上所有内容大小的情况下(当您将所有内容都放在VStack中时)进行调整,因此图像会按原样缩小。resizalbe

可能的解决方案是将习惯嵌入到滚动视图中,如下所示

if self.showHabits {
  ScrollView {                                            // << here !!
    ForEach(self.listOfHabits, id: \.self) { habit in
        AddHabitButtons(habit: habit, selectedHabitList: self.$selectedHabitList, enoughHabits: self.$enoughHabits)
    }
  }
}
if self.showHabits{

ScrollView{//您必须在图像下方添加许多项目,以便在不调整屏幕上所有内容大小的情况下(当您将所有内容都放在VStack中时)进行调整,因此图像会按原样缩小。resizalbe

可能的解决方案是将习惯嵌入到滚动视图中,如下所示

if self.showHabits {
  ScrollView {                                            // << here !!
    ForEach(self.listOfHabits, id: \.self) { habit in
        AddHabitButtons(habit: habit, selectedHabitList: self.$selectedHabitList, enoughHabits: self.$enoughHabits)
    }
  }
}
if self.showHabits{

ScrollView{//我试了第二个。成功了。非常感谢!我试了第二个。成功了。非常感谢!