es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Establecer el ancho de un TextField en SwiftUI

Cuando se utiliza TextField, quiero establecer un ancho fijo independientemente de la longitud del texto mostrado, por ejemplo, el ancho del campo para “123456789”, aunque el contenido sea solo “1”.

TextField("0", text: $username)
    .textFieldStyle(RoundedBorderTextFieldStyle())
    .fixedSize(horizontal: true, vertical: false)
    .frame(width: 120)

No encontré nada para establecer el ancho. El uso de frame solo afecta al marco circundante, pero quiero establecer el ancho del propio TextField. Por lo tanto, el ancho visible debería ser más ancho que el contenido. ¿Alguna idea?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para establecer el ancho del TextField independientemente del contenido, se puede usar el modificador .frame con un valor de ancho fijo. Sin embargo, esto solo afectará el marco circundante y el campo de texto se ajustará a la longitud del texto ingresado. Para establecer un ancho fijo para el TextField en sí, puede usar el modificador .frame nuevamente pero esta vez, combinarlo con el modificador .overlay para agregar un rectángulo claro sobre el campo de texto. Esto creará un ancho fijo para el TextField que no se ajustará con el texto ingresado. Aquí hay un ejemplo de código:

    TextField("Ingrese texto", text: $text)
        .frame(width: 150, height: 30)
        .overlay(
            Rectangle().stroke(Color.clear, lineWidth: 2)
        )
    

    En el código anterior, reemplace “Ingrese texto” con su marcador de posición deseado y “$text” con su variable de enlace de texto. El modificador .frame se utiliza para establecer el ancho y la altura del campo de texto, con un valor de ancho fijo de 150. El modificador .overlay agrega un rectángulo claro sobre el campo de texto utilizando la forma Rectangle (), con un color de trazo claro y un ancho de línea de 2. Esto crea un ancho fijo para el campo de texto que no se ajustará con el texto ingresado, independientemente de cuántos caracteres se ingresen.

Comments are closed.