在UIKit中,绘制描边和填充的路径/形状非常简单。
例如,下面的代码绘制了一个蓝色的红色圆圈。
override func draw(_ rect: CGRect) {
guard let ctx = UIGraphicsGetCurrentContext() else { return }
let center = CGPoint(x: rect.midX, y: rect.midY)
ctx.setFillColor(UIColor.red.cgColor)
ctx.setStrokeColor(UIColor.blue.cgColor)
let arc = UIBezierPath(arcCenter: center, radius: rect.width/2, startAngle: 0, endAngle: CGFloat.pi * 2, clockwise: true)
arc.stroke()
arc.fill()
}
SwiftUI如何做到这一点?
Swift UI似乎支持:
Circle().stroke(Color.blue)
// and/or
Circle().fill(Color.red)
但不是
Circle().fill(Color.red).stroke(Color.blue) // Value of type 'ShapeView, Color>' has no member 'fill'
// or
Circle().stroke(Color.blue).fill(Color.red) // Value of type 'ShapeView' has no member 'stroke'
我应该只是ZStack两个圈子吗?这似乎有点愚蠢。
您可以在实心圆的顶部绘制带有笔触的圆
struct ContentView: View {
var body: some View {
Circle()
.overlay(
Circle()
.stroke(Color.green,lineWidth: 5)
).foregroundColor(Color.red)
}
}