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.

Deslizar un uiView en Swift como un controlador de vista tipo Tab

Quiero deslizar una vista de usuario como la que usamos en un controlador de vista de pestañas en SwiftUI, pero mientras usamos el Storyboard, si usamos un controlador de vista de pestañas, se desliza toda la pantalla, pero yo solo quiero deslizar la mitad de la pantalla y realizar algunas funciones allí. Adjunto una captura de pantalla para una mejor comprensión:

captura de pantalla de mi simulador

Quiero obtener este tipo de respuesta. Con el botón “Añadir un nuevo grupo”, estoy agregando un nuevo grupo, y al deslizar quiero ver mis grupos secundarios.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes usar un UIPanGestureRecognizer para detectar el gesto de deslizamiento y mover la vista en consecuencia. Primero, crea una conexión de salida para la vista que deseas deslizar:

    @IBOutlet weak var swipeView: UIView!
    

    Luego, crea el reconocedor de gestos y agrégalo a la vista:

    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(handlePan(_:)))
    swipeView.addGestureRecognizer(panGesture)
    

    En la función handlePan, puedes calcular la traducción del gesto y mover la vista en consecuencia:

    @objc func handlePan(_ gesture: UIPanGestureRecognizer) {
        let translation = gesture.translation(in: swipeView)
    
        if gesture.state == .changed {
            if translation.y > 0 {
                // Deslizar hacia abajo, mover vista hacia abajo
                swipeView.transform = CGAffineTransform(translationX: 0, y: translation.y)
            }
        } else if gesture.state == .ended {
            if translation.y > swipeView.bounds.height / 2 {
                // Deslizar hacia abajo lo suficiente, realizar acción
                performSwipeAction()
            } else {
                // No se deslizó lo suficiente, animar la vista de vuelta a su posición original
                UIView.animate(withDuration: 0.2) {
                    self.swipeView.transform = .identity
                }
            }
        }
    }
    

    En la función performSwipeAction, puedes agregar la lógica para mostrar los grupos secundarios o realizar cualquier otra función que desees.

    Ten en cuenta que este código asume que solo deseas deslizar hacia abajo y no hacia arriba, y que deseas realizar la acción cuando el usuario desliza hacia abajo más de la mitad de la altura de la vista. Puedes modificarlo para adaptarlo a tus requisitos específicos.

Comments are closed.