You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中RotationGesture旋转角度无法通过Text显示问题求助

SwiftUI中显示旋转手势最终角度的解决方案
  • 问题核心:finaldegree是Angle类型,Text无法直接接收该类型,必须转换为字符串格式才能正常显示。
  • 同时原手势逻辑存在角度丢失问题:直接将手势结束值赋值给finaldegree会覆盖之前的累计角度,需要修正为累加逻辑。

修正后的完整代码

@State var degree: Angle = .zero
@State var finaldegree: Angle = .zero

var body: some View {
    VStack {
        Image("Encoder_White1")
            .padding(100)
            .scaleEffect(2)
            .rotationEffect(degree + finaldegree)
            .gesture(
                RotationGesture()
                    .onChanged { value in
                        degree = value
                    }
                    .onEnded { _ in
                        // 累加临时拖动的角度到最终角度
                        finaldegree += degree
                        degree = .zero
                    }
            )
        
        // 格式化显示最终角度,保留1位小数并添加单位
        Text("最终角度:\(String(format: "%.1f", finaldegree.degrees))°")
            .padding(.top, 20)
    }
}

关键说明

  1. 角度转换显示:通过finaldegree.degrees获取角度的数值,用String(format:)格式化后传入Text,既解决了类型不匹配问题,也让显示更美观。
  2. 修复累计逻辑:手势结束时将临时拖动的degree累加到finaldegree,再重置degree为0,保证每次旋转的角度都会被保留,符合常规旋转交互的预期。

内容的提问来源于stack exchange,提问作者Alex Kocha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 02:10:51