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.

Limitando el campo de texto al botón en Swift

Tengo un botón que creé en mi storyboard, pero tengo un UITextField personalizado que necesita ser implementado en código. Estoy tratando de colocar el campo de texto de modo que esté 20 píxeles por encima del botón, pero por alguna razón no obtengo el resultado deseado. ¿Me estoy perdiendo algo o esta no es la forma de implementarlo? Aquí está mi implementación y resultado:

En viewDidLoad:

self.view.addSubview(cardTextField)
cardTextField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
    NSLayoutConstraint(item: cardTextField, attribute: .bottom, relatedBy: .equal, toItem: buyPointsButton, attribute: .top, multiplier: 1, constant: 70),
    NSLayoutConstraint(item: cardTextField, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: buyPointsButton.frame.width),
    NSLayoutConstraint(item: cardTextField, attribute: .centerY, relatedBy: .equal, toItem: self.view, attribute: .centerY, multiplier: 1, constant: 0),
    NSLayoutConstraint(item: cardTextField, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 28)
])

Imagen 1

Imagen 2

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en las restricciones que has establecido para cardTextField. Para colocar el campo de texto 20 píxeles encima del botón, debes cambiar el valor constante de la restricción bottom a -20.

    Aquí está la implementación actualizada:

    self.view.addSubview(cardTextField)
    cardTextField.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
        NSLayoutConstraint(item: cardTextField, attribute: .bottom, relatedBy: .equal, toItem: buyPointsButton, attribute: .top, multiplier: 1, constant: -20),
        NSLayoutConstraint(item: cardTextField, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: buyPointsButton.frame.width),
        NSLayoutConstraint(item: cardTextField, attribute: .centerX, relatedBy: .equal, toItem: self.view, attribute: .centerX, multiplier: 1, constant: 0),
        NSLayoutConstraint(item: cardTextField, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: 28)
    ])
    

    Esto debería colocar el campo de texto 20 píxeles encima del botón. Es posible que necesites ajustar el valor constante según tus requisitos específicos de diseño.

Comments are closed.