SwiftUI 的笔划(stroke)可以使用破折号和破折号相位选项进行配置,这使我们可以非常精细地控制线条的绘制方式。例如,我们可以绘制一个带有虚线虚线框,如下所示:
struct ContentView: View {
var body: some View {
Rectangle()
.strokeBorder(style: StrokeStyle(lineWidth: 4, dash: [10]))
}
}
对破折号参数使用 [10]
表示 SwiftUI
将绘制笔划的 10
点,然后绘制 10
点的空间,重复该模式直到整个矩形都被描边。 这是一个数组,因为您可以提供多个值,例如 [10,5]
,以表示“每10个笔划,然后是5个点的间隙”。
当您在破折号阶段中添加时,这才变得真正有趣,该阶段指示了破折号和间隙应放置的位置。 如果将相位存储在状态属性中,则可以随时间对该值进行动画处理,以创建所谓的行进蚂蚁效果-围绕形状移动的虚线笔划,通常用于表示对象选择。
在代码中,它看起来像这样:
struct ContentView: View {
@State private var phase: CGFloat = 0
var body: some View {
Rectangle()
.strokeBorder(style: StrokeStyle(lineWidth: 4, dash: [10], dashPhase: phase))
.frame(width: 200, height: 200)
.onAppear {
withAnimation(Animation.linear.repeatForever(autoreverses: false)) {
phase -= 20
}
}
}
}