SwiftUI #20: Prioridades

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • MyrinNew
    Senior Member
    • Feb 2024
    • 5175

    #1

    SwiftUI #20: Prioridades

    Un Stack divide el espacio de forma equidistante entre las vistas. Si las vistas no caben, asigna un tamaño fijo a los Image y reduce el tamaño de Text.






    struct ContentView: View {
    var body: some View {
    HStack {
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    Image(systemName: "circle")
    .font(.system(size: 100))
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    }
    }
    }










    En el ejemplo anterior, el contenido de los campos Text está truncado por el uso de .lineLimit(1). De lo contrario, ocuparía más de una línea.


    Para que un Text se muestre por completo, se debe cambiar su prioridad.
    • layoutPriority(_. La prioridad por defecto de una vista para pintarse es 0. Una vista tomarea tanto espacio como le sea posible, entre más alta sea su prioridad.
    • fixedSize(horizontal:vertical: Fija la vista a su tamaño ideal. Si no se especifica ningún argumento, el tamaño es fijado en ambas dimensiones.




    struct ContentView: View {
    var body: some View {
    HStack {
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    Image(systemName: "circle")
    .font(.system(size: 100))
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    }
    }
    }










    fixedSize(horizontal:vertical tiene incluso más prioridad que layoutPriority(_ puesto que si fixedSize(horizontal:vertical está activo en una vista, esta tomará el tamaño que necesita, sin importar la prioridad de los otros elementos.






    struct ContentView: View {
    var body: some View {
    HStack {
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    .fixedSize()
    Image(systemName: "circle")
    .font(.system(size: 100))
    Text("Hola Mundo")
    .font(.title)
    .lineLimit(1)
    .layoutPriority(100)
    }
    }
    }












    More...
Working...