Swiftui 快速过渡/动画

Swiftui 快速过渡/动画,swiftui,Swiftui,我是SwiftUI新手,已经成功地构建了一个简单的游戏。 除了我计划实现某种图像动画/转换以将图像引入视图之外,所有工作都已完成。 图像格式正确,但过于突然,希望能够软化图像的光晕 我尝试过使用动画的方法,但没有什么不同。 我希望有人能给我指出正确的方向 var body: some View { NavigationView { ZStack { Image("background")

我是SwiftUI新手,已经成功地构建了一个简单的游戏。 除了我计划实现某种图像动画/转换以将图像引入视图之外,所有工作都已完成。 图像格式正确,但过于突然,希望能够软化图像的光晕 我尝试过使用动画的方法,但没有什么不同。 我希望有人能给我指出正确的方向


    var body: some View {


        NavigationView {

            ZStack {

                Image("background")
                    .resizable()
                    .aspectRatio(contentMode: .fill)
                    .scaledToFill()
                    .edgesIgnoringSafeArea(.all)


                VStack {

                        Text("Tap Correct Image")

                            .font(.headline)
                            .foregroundColor(Color.blue)

                    ForEach((0...2), id: \.self) { number in

                        Image(self.naijaObject[number])
                            .resizable()
                            .frame(width: 100, height: 100)
                            .border(Color.black,width: 1)
                            .transition(.slide)
                            .animation(.easeInOut(duration: 1))
                            .onTapGesture {
                                self.pictureTapped(number)
                        }


                    }


                    .navigationBarTitle(Text(processCorrectAnswer))
                    .alert(isPresented: $showAlert) {
                        Alert(title: Text("\(alertTitle), Your score is \(score)"), dismissButton: .default(Text("Continue")) {
                            self.askQuestion()
                        })
                    }
                }//End of VStack

            }//End of

        } //End of Naviagtion View


    } //End of View

    //Function to action which object is tapped
           func pictureTapped(_ tag: Int) {
               if tag == correctAnswer {

                score += 1
                alertTitle = "Correct"
               } else {

                score -= 1
                alertTitle = "Wrong"
               }
            showAlert = true
           }

    //Function to continue the game
    func askQuestion() {
        naijaObject.shuffle()
        correctAnswer = Int.random(in: 0...2)
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


我想我明白了,你想要实现什么,但在未来更好地呈现更多的代码。这里我使用了
DispatchQueue.main.asyncAfter(截止日期:.now()+1)
将变量
showart
更改为
true
。它工作顺利,希望能帮助您:

结构问题游戏:查看{ @状态私有变量showAlert=false @国家私有风险值分数:Int=0 @国家私有var correctAnswer=1 @国家私有var=false var body:一些观点{ 导航视图{ VStack{ 文本(“点击正确的图像”) .font(.headline) ForEach((0…2),id:\.self){中的数字 矩形() .框架(宽度:100,高度:100) .foregroundColor(self.tapped&&number==self.correctAnswer?.green:.black)//您可以为动画做任何事情 .animation(.easeInOut(持续时间:1.0)) .ontapsigne{ self.pictureTapted(编号) } } .navigationBarTitle(文本(“回答问题”)) .alert(显示:self.$showAlert){ 警报(标题:文本(“您的分数是\(分数)”),解除按钮:。默认值(文本(“继续”)){ self.askQuestion() }) } } } } func pictureTaped(uTag:Int){ 抽头=真 如果标记==correctAnswer{ 分数+=1 }否则{ 分数-=1 } DispatchQueue.main.asyncAfter(截止日期:.now()+1){ self.showart=true } } //函数继续游戏 func askQuestion(){ 抽头=假 showarert=false correctAnswer=Int.random(in:0…2) } } 结构问题游戏预览:PreviewProvider{ 静态var预览:一些视图{ 问题游戏() } }
p.S.不,我没有找到平稳显示警惕的方法。在这种情况下,当您点击图像时,最好使用
ZStack
并将警报(或任何其他视图)不透明度从0更改为1(带有动画)。

我很想测试一下。再次感谢。@ufookoro,很高兴它帮助了你