setup inside ios swift uiscrollview

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.

  1. Agregue una vista única en su scrollView con restricciones a la izquierda, derecha, arriba, abajo, altura, ancho,

  2. Hacer la salida de la anchura y altura.

  3. 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.