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.

Cómo determinar que el desplazamiento ha llegado a una posición específica (debo determinar que el espacio desde la parte inferior sea de 56 px) mientras se desplaza en iOS Swift.

Tengo un ScrollView en una vista, donde el control de página permanece fijo desde la parte inferior.
El control de página se anima y se muestra cuando la página se desplaza a 48px desde la parte inferior de la página y permanece con la opacidad al 100% (mostrado) hasta el final de la página.
Pero no puedo detectar este comportamiento. El tamaño del contenido del scrollView se menciona a continuación.

Tamaño del contenido del ScrollView:

ancho: 414.0
alto: 852.0

Estoy usando el siguiente código.

// MARK: – ScrollView Delegate
extension RemoveViewController: UIScrollViewDelegate {

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let distanciaDesdeAbajo = scrollView.contentSize.height - scrollView.contentOffset.y
    print(distanciaDesdeAbajo)
    if distanciaDesdeAbajo >= 796 {
        print("Has alcanzado el final deseado")
        self.mostrarControlDePágina(mostrar: true)
    } else {
        self.mostrarControlDePágina(mostrar: false)
    }
}

}

func mostrarControlDePágina(mostrar: Bool) {
if mostrar {
if self.pageControl.alpha != 1 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 1
})
}
} else {
if self.pageControl.alpha != 0 {
UIView.animate(withDuration: 0.300, animations: {
self.pageControl.alpha = 0
})
}
}
}

Por favor, avíseme qué estoy haciendo incorrectamente aquí.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basándose en la información proporcionada, parece que el problema puede residir en el cálculo de la variable distanceFromBottom en el método delegado scrollViewDidScroll.

    Suponiendo que la posición inferior deseada del control de página esté a 48px desde la parte inferior de la vista, el cálculo de distanceFromBottom debe ajustarse en consecuencia. En lugar de usar el tamaño completo del contenido del scroll view, el cálculo debe restarle la altura de la vista, de la siguiente manera:

    let distanceFromBottom = scrollView.contentSize.height - scrollView.contentOffset.y - scrollView.frame.size.height + 48
    

    Esto dará la distancia entre la parte inferior del área visible de la vista y la posición deseada del control de página.

    Además, la condición para mostrar el control de página debe ajustarse para considerar un rango de valores en lugar de un valor exacto. Por ejemplo, la siguiente condición podría usarse para mostrar el control de página cuando la distancia esté dentro de un rango de 48 a 96 píxeles desde la parte inferior de la vista:

    if distanceFromBottom >= 48 && distanceFromBottom <= 96 {
        self.showPageControl(toShow: true)
    } else {
        self.showPageControl(toShow: false)
    }
    

    Por supuesto, estos valores se pueden ajustar según los requisitos específicos del diseño de la vista.

    Aparte de estos cambios, el código parece manejar correctamente la visualización y ocultamiento del control de página.

Comments are closed.