Search code examples
swiftuirotationgesture

Print angle rotate gesture


I want print value angle rotate, but Text (self.finaldegree) don’t working.

Code:

@State var degree: Angle = Angle(degrees: 0)
@State var finaldegree: Angle = Angle(degrees: 0)
       var body: some View {
            VStack { 
            Image("Encoder_White1")
                .padding(100)
                .scaleEffect(2)
                .rotationEffect(degree+finaldegree)
                    .gesture(RotationGesture()
                        .onChanged{ value in
                            degree = value
                           }
                       .onEnded{ value in
                           finaldegree = value
                           degree = Angle(degrees: 0)
                          })     
            
        }
    }

Text (self.finaldegree)


Solution

  • It's not quite clear what you're trying to do, as there's a a lot of extra code that's probably not needed.

    Text(self.finaldegree)
    

    won't work by itself, as Text expects a String, or a value that can formatted as a String (e.g. Int, Double, Date). If you convert your angle into a double (e.g using .degrees), you can then format that for display, e.g.

    Text(angle.degrees, format: .number)
    

    A simplified solution to your code might be:

    
    struct ContentView: View {
        @State var angle: Angle = .zero
        
        var body: some View {
            VStack {
                Image(systemName: "questionmark")
                    .padding(100)
                    .scaleEffect(4)
                    .rotationEffect(angle)
                    .gesture(
                        RotationGesture()
                            .onChanged{ value in
                                angle = value
                            }
                        )
                Text("\(Text(angle.degrees, format: .number))°")
            }
        }
    }
    

    enter image description here