👔ShapeStyleView

swiftcustomview ⟩ Swatch

ShapeStyle 當成一個 View

👉 前情提要請參閱: can't change builtin hierarchy

ShapeStyleView, AnyGradient as View
import SwiftUI

// ┌────────────────┐
// │ ShapeStyleView │
// └────────────────┘
// wrap a shape style in a view
struct ShapeStyleView<S: ShapeStyle>: View {
    
    let style: S
    
    init(_ shapeStyle: S) {
        self.style = shapeStyle
    }
    
    // `View` protocol requirement
    var body: some View {
        Rectangle().fill(style)
    }
}

// ┌─────────────────┐
// │ Gradient + View │
// └─────────────────┘
// now `Gradient` is a view.
extension Gradient: View {
    public var body: some View {
        Rectangle().fill(self)
    }
}

// ┌────────────────────┐
// │ AnyGradient + View │
// └────────────────────┘
// now `AnyGradient` is a view.
extension AnyGradient: View {
    public var body: some View {
        Rectangle().fill(self)
    }
}

Last updated

Was this helpful?