プレビューでアニメーションが効かなくなることがあった。
SandwichDetail の中でアニメーションを設定しているとする。
struct SandwichDetail: View {
var sandwich:Sandwich
@State private var zoomed = false
var body: some View {
VStack {
Spacer(minLength:0)
Image(sandwich.imageName)
.resizable()
.aspectRatio(contentMode: zoomed ? .fill : .fit)
.onTapGesture {
withAnimation{ -- << ココ ! <<
zoomed.toggle()
}
}
Spacer(minLength:0)
if sandwich.isSpicy && !zoomed {
HStack {
Spacer()
Label("Spicy", systemImage: "flame.fill")
Spacer()
}
.padding(.all)
.font(Font.headline.smallCaps())
.background(Color.red)
.foregroundColor(Color.yellow)
}
}
.navigationTitle(sandwich.name)
.edgesIgnoringSafeArea(.bottom)
}
}
以下だと、NG。
struct SandwichDetail_Previews: PreviewProvider {
static var previews: some View {
Group {
NavigationView{
SandwichDetail(sandwich: testData[1])
}
NavigationView{
SandwichDetail(sandwich: testData[0])
}
}
}
}
以下だと、OK。
struct SandwichDetail_Previews: PreviewProvider {
static var previews: some View {
Group {
NavigationView{
SandwichDetail(sandwich: testData[1])
}
}
}
}
Group の中に、NavigationView を2つ入れると、アニメーションが効かなくなった。