11.6 如何旋转视图
SwiftUI 的 rotationEffect()
修改器可以旋转视图,接受的参数可以为度(degree)和弧度(radian)。
**1 度是圆周长的 1/360,一度表示为 1゜。1 弧度是圆周长的 1/2πr,1 弧度 = 360゜/(2π) **
举个例子,不如逆时针旋转 90 度,使用方式如下:
Text("Up we go")
.rotationEffect(.degrees(-90))
如果是用弧度做单位,可以使用 .radians()
参数,如下:
Text("Up we go")
.rotationEffect(.radians(.pi))
当然,可以把这个旋转值设成动态的,为此我们搭配一个滑块视图,用来调整旋转角度,代码如下:
struct ContentView: View {
@State var rotation: Double = 0
var body: some View {
VStack {
Slider(value: $rotation, from: 0.0, through: 360.0, by: 1.0)
Text("Up we go")
.rotationEffect(.degrees(rotation))
}
}
}
默认情况下,旋转都是围绕视图中心来转的,如果要从特定的坐标来作为旋转圆心,额外添加一个 anchor
锚点参数就可以,比如想让视图以左上角为中心旋转,代码如下:
struct ContentView: View {
@State var rotation: Double = 0
var body: some View {
VStack {
Slider(value: $rotation, from: 0.0, through: 360.0, by: 1.0)
Text("Up we go")
.rotationEffect(.degrees(rotation), anchor: UnitPoint(x: 0, y: 0))
}
}
}