trim()
绘制实体形状的一部分?SwiftUI 允许我们使用其 trim()
修饰符仅绘制笔触的一部分或填充形状,该修饰符采用两个参数:起始值和终止值,都存储为 0 到 1 之间的 CGFloat
。
例如,如果您想要一个半圆,则可以这样写:
Circle()
.trim(from: 0, to: 0.5)
.frame(width: 200, height: 200)
SwiftUI 绘制其形状,以使 0
度直接位于右侧,因此,如果要更改为使其直接向上0度,则应应用 rotationEffect()
修饰符。
例如,它使用计时器来调整传递给 trim()
的值,以使矩形的笔触随着时间的推移而增长,例如进度指示器:
struct ContentView: View {
@State private var completionAmount: CGFloat = 0.0
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
var body: some View {
Rectangle()
.trim(from: 0, to: completionAmount)
.stroke(Color.red, lineWidth: 20)
.frame(width: 200, height: 200)
.rotationEffect(.degrees(-90))
.onReceive(timer) { _ in
withAnimation {
if completionAmount == 1 {
completionAmount = 0
} else {
completionAmount += 0.2
}
}
}
}
}
您也可以使用带有填充形状的 trim()
,尽管动画时结果有些奇怪。