Saltar al contenido

SwiftUI: ¿Cómo dibujar formas rellenas y trazadas?

Puede que se de el caso de que encuentres algún problema con tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al trabajo final.

Solución:

Puede dibujar un círculo con trazo encima de un círculo relleno

struct ContentView: View 
    var body: some View 
        Circle()
        .overlay(
            Circle()
           .stroke(Color.green,lineWidth: 5)
          ).foregroundColor(Color.red)
   

ingrese la descripción de la imagen aquí

También puede usar la combinación de borde de trazo y fondo.

código:

         Circle()
            .strokeBorder(Color.blue,lineWidth: 4)
            .background(Circle().foregroundColor(Color.red))

resultado :

ingrese la descripción de la imagen aquí

Mi solución:

import SwiftUI

extension Shape 
    /// fills and strokes a shape
    public func fill(
        _ fillContent: S, 
        stroke       : StrokeStyle
    ) -> some View 
        ZStack 
            self.fill(fillContent)
            self.stroke(style:stroke)
        
    

Ejemplo:


struct ContentView: View 
    // fill gradient
    let gradient = RadialGradient(
        gradient   : Gradient(colors: [.yellow, .red]), 
        center     : UnitPoint(x: 0.25, y: 0.25), 
        startRadius: 0.2, 
        endRadius  : 200
    )
    // stroke line width, dash
    let w: CGFloat   = 6       
    let d: [CGFloat] = [20,10]
    // view body
    var body: some View 
        HStack 
            Circle()
                // ⭐️ Shape.fill(_:stroke:)
                .fill(Color.red, stroke: StrokeStyle(lineWidth:w, dash:d))
            Circle()
                .fill(gradient, stroke: StrokeStyle(lineWidth:w, dash:d))
        .padding().frame(height: 300)
    

Resultado:

rellenar y trazar círculos

Te mostramos reseñas y puntuaciones

Recuerda que tienes la capacidad de añadir una valoración justa .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *