inside - setup scrollview ios
Deshabilitar el desplazamiento horizontal desde UIScrollView Swift (5)
Vista de desplazamiento
Tengo un UIScrollView, con restricciones a la left: 0, top: 0, right: 0, bottom: 0
Vista de desplazamiento interior
En la parte superior de este UIScrollView
hay un UIImageView
con restricciones a la left: 0, top: 0, right: 0, height: 200
Debajo de esto tengo un UITextView
con restricciones a la left: 0, top: 0, right: 0, bottom: 0
Esto significa que el UITextView
cambiará de tamaño con respecto a su contenido, y establezco el scrollingEnabled
en false
para el UITextView
.
Entonces, cuando corro, casi funciona perfectamente.
El único problema es que UIImageView
ocupa aproximadamente un 10% más que el ancho de pantalla real. Por lo tanto, el desplazamiento horizontal está habilitado.
He intentado añadir las líneas
imageView.frame = CGRect(0, 0, screenSize.width, 200)
scrlView.contentSize.width = screenSize.width
pero esto no hace ninguna diferencia. Todavía puedo desplazarme horizontalmente y la Vista de imagen aún ocupa un 10% más que el ancho de pantalla real.
Tenga en cuenta que no he configurado el ancho de la pantalla imageView en el guión gráfico, solo programáticamente.
¿Algunas ideas?
Cambié esto para que solo devuelva 0. No es necesario que lo compruebe si desea desplazarse.
func scrollViewDidScroll(scrollView: UIScrollView) {
scrollView.contentOffset.x = 0
}
No es necesario el bloqueo direccional.
Me gusta esto,
func scrollViewDidScroll(scrollView: UIScrollView) {
if scrollView.contentOffset.x>0 {
scrollView.contentOffset.x = 0
}
}
Y, puede establecer esta propiedad:
scrollImg.directionalLockEnabled = true
Si está utilizando el guión gráfico y la reproducción automática, debe considerar cómo funciona ScrollView en el guión gráfico con la reproducción automática.
Considera lo siguiente.
Agregue una vista única en su scrollView con restricciones a la izquierda, derecha, arriba, abajo, altura, ancho,
Hacer la salida de la anchura y altura.
Agregue sus subvistas a la vista que agregó en el scrollView
actualice el ancho al tamaño de pantalla, por ejemplo: 320 para iPhone5 o 4.
self.viewWidth = SCREEN_WIDTH;
[self.view updateConstraints];
Swift 4
Bloqueo de desplazamiento horizontal
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.x != 0 {
scrollView.contentOffset.x = 0
}
}
Puede cambiar la x a la y para el desplazamiento vertical.
Asegúrese de agregar UIScrollViewDelegate de esta manera:
class MyViewController: UIViewController, UIScrollViewDelegate {
@IBOutlet var scrollView: UIScrollView!
...
}
Y establecer el delegado para el ScrollView
scrollView.delegate = self
func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollView.contentOffset.x = 0
}
Esto evita que la vista de desplazamiento se desplace hacia el borde superior también.