Pregunta UIScrollView no se desplaza aunque contentSize es más pequeño que UIImageView


Entonces tengo un UIImageView como una subvista de UIScrollView, He establecido el contentSize ser más pequeño que el UIImageView ancho y alto, sin embargo, no me permite desplazarme ... ¿por qué es esto? Aquí hay un código:

UIImage * image = [UIImage imageWithData:data];
                UIImageView * imgView = [[UIImageView alloc] initWithImage:image];
                [imgView setUserInteractionEnabled:YES];
                //[imgView setContentMode:UIViewContentModeScaleAspectFill];
                [imgView setBackgroundColor:[UIColor clearColor]];
                [imgView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
                [imgView setFrame:CGRectMake(0, 0, imgView.frame.size.width, imgView.frame.size.height)];

                CGRect imgFrame;
                imgFrame.size.width = originalImageSize.width;
                imgFrame.size.height = originalImageSize.height;
                imgFrame.origin.x = imageOriginPoint.x;
                imgFrame.origin.y = imageOriginPoint.y;

                UIScrollView * imgScrollView = [[UIScrollView alloc] initWithFrame:imgFrame];
                [imgScrollView setScrollEnabled:YES];
                [imgScrollView setClipsToBounds:YES];
                [imgScrollView addSubview:imgView];
                [imgScrollView setBackgroundColor:[UIColor clearColor]];


  [imgScrollView setFrame:imgFrame];
                [imgScrollView setContentSize:CGSizeMake(200, 200)];

SCROLL VIEW CONTENT SIZE WIDTH IS 200.000000 AND HEIGHT CONTENT SIZE IS 200.000000
UIIMAGE VIEW WIDTH IS 2240.225830 AND HEIGHT IS 2240.225830
SCROLL VIEW FRAME WIDTH IS 768.000000 AND SCROLL VIEW FRAME HEIGHT IS 768.000061

¿Alguna idea?


7
2018-01-17 04:34


origen


Respuestas:


Eso es porque su tamaño de límites de la vista de desplazamiento es mayor que su tamaño de contenido. El tamaño del contenido debe ser el tamaño real de la vista de la imagen, y el tamaño visible se establece por marco / límites. Supongo que quieres desplazar una imagen en un rect de tamaño {200, 200}? Prueba esto:

        UIScrollView * imgScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; // this is your visible rect
        [imgScrollView setScrollEnabled:YES];
        [imgScrollView setClipsToBounds:YES];
        [imgScrollView addSubview:imgView];
        [imgScrollView setBackgroundColor:[UIColor yellowColor]];

        [imgScrollView setContentSize:imgFrame.size]; // this is your image view size

10
2018-01-17 05:25



Sé que esto es viejo, pero quiero señalar que cuando creas un UIScrollView en el código, lo más importante para establecer es:

scrollView.scrollEnabled = YES;

Si no configura eso, su contentSize es irrelevante.


5
2018-03-13 03:03



La forma más ingeniosa de hacer esto es establecer siempre que contentSize sea más grande que el tamaño de la vista. Pero hay una propiedad en Swift que permite que una vista de desplazamiento siempre se "desplace" independientemente del tamaño del contenido:

scrollView.alwaysBounceVertical = true

También hay uno para desplazamiento horizontal


4
2018-03-07 07:29



el tamaño del contenido de la vista de desplazamiento debe ser mayor que el ancho y la altura del marco de scrollView
hacer esto -

    scrollView.contentSize = CGSizeMake(originalImageSize.width,originalImageSize.height);

Creo que eso ayudará.


0
2018-01-17 05:51



Si está tratando de configurar esto usando IB, asegúrese de que la propiedad Height de UIScrollView esté configurada en un número menor que la propiedad Height de contentView. Por ejemplo, si ha configurado la altura de su contentView en 810 puntos, asegúrese de establecer la altura de UIScrollView en aproximadamente 610 pts.


0
2017-07-31 03:58