Card flip partially working
This commit is contained in:
		
							
								
								
									
										66
									
								
								Toki Trainer/Views/FlashCardView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								Toki Trainer/Views/FlashCardView.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
//
 | 
			
		||||
//  FlashCardView.swift
 | 
			
		||||
//  Toki Trainer
 | 
			
		||||
//
 | 
			
		||||
//  Created by Avery Ada Pace on 11/5/21.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
import SwiftUI
 | 
			
		||||
 | 
			
		||||
struct FlashCardView: View {
 | 
			
		||||
    let screen = UIScreen.main.bounds
 | 
			
		||||
    
 | 
			
		||||
    @State var flipped = false
 | 
			
		||||
    
 | 
			
		||||
    var body: some View {
 | 
			
		||||
        
 | 
			
		||||
        let flipDegrees = flipped ? 0.0 : 180.0
 | 
			
		||||
        
 | 
			
		||||
        ZStack() {
 | 
			
		||||
            Text("sina").opacity(flipped ? 0.0 : 1.0)
 | 
			
		||||
            Text("you")
 | 
			
		||||
                .opacity(flipped ? 1.0 : 0.0)
 | 
			
		||||
                .rotation3DEffect(Angle(degrees: -180 + flipDegrees), axis: (x: 0.0, y: 10.0, z: 0.0))
 | 
			
		||||
        }
 | 
			
		||||
        .frame(width: 0.8 * screen.width, height: 200.0)
 | 
			
		||||
        .font(.title)
 | 
			
		||||
        .background(self.flipped ? .cyan : .mint)
 | 
			
		||||
        .cornerRadius(20)
 | 
			
		||||
        .shadow(color: .gray, radius: 10.0, x: 10, y: 10)
 | 
			
		||||
        .rotation3DEffect(self.flipped ? Angle(degrees: 180) : Angle(degrees: 0), axis: (x: 0.0, y: 10.0, z: 0.0)
 | 
			
		||||
        )
 | 
			
		||||
        .animation(.default)
 | 
			
		||||
        .onTapGesture {
 | 
			
		||||
            self.flipped.toggle()
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct CardFlipModifier: AnimatableModifier {
 | 
			
		||||
    var rotationAngle: Double
 | 
			
		||||
    
 | 
			
		||||
    init(isFaceUp: Bool) {
 | 
			
		||||
        rotationAngle = isFaceUp ? 0 : 180
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    var animatableData: Double {
 | 
			
		||||
        get { rotationAngle }
 | 
			
		||||
        set { rotationAngle = newValue }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    func body(content: Content) -> some View {
 | 
			
		||||
        ZStack {
 | 
			
		||||
            RoundedRectangle(cornerRadius: 20.0)
 | 
			
		||||
                .fill(Color.blue.opacity(rotationAngle < 90 ? 0.5 : 1.0))
 | 
			
		||||
            content
 | 
			
		||||
                .opacity(rotationAngle < 90 ? 1.0 : 0.0)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct FlashCardView_Previews: PreviewProvider {
 | 
			
		||||
    static var previews: some View {
 | 
			
		||||
        FlashCardView()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user