Así que tengo un UIImageView como una subvista de UIScrollView, he instalado el contentSize a ser menor que el UIImageView la anchura y la altura, sin embargo no me permite desplazarse.. ¿por qué es esto? Aquí está el 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?

intenta esto…imgScrollView.contentSize = imgView.marco.tamaño;
no funciona demasiado

OriginalEl autor adit | 2012-01-17

5 Comentarios

  1. 11

    Eso es debido a que su tamaño de los límites de desplazamiento de la vista es más grande que su tamaño del contenido.
    El tamaño del contenido necesita ser el tamaño real de la imagen de la vista, y el tamaño visible es el fijado por el /marco de los límites. Supongo que desea desplazarse por una imagen en un {200, 200} tamaño de un rect?
    Intente 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
    así que el tamaño de la trama tiene que ser menor que el contentSize? si el tamaño de la trama es la misma que la contentSize entonces no desplazarse?
    Por defecto, SÍ. Pero si alwaysBounceVertical y alwaysBounceHorizontal para SÍ (ambos por defecto NO), puede arrastrar el contenido de la vista, incluso el contentSize es más pequeño que el tamaño de fotograma
    Me estaba volviendo nueces coz el scrollview no fue el desplazamiento al contentSize fue inferior a los límites de tamaño. En mi caso, quiero reducir el tamaño del contenido de scrollview cuando el teclado viene, me sorprendió ver que la reducción de tamaño del contenido no se hacen de la vista de desplazamiento para desplazarse. Supongo, tengo que cambiar el marco de la desplácese a la vista en su lugar.

    OriginalEl autor Linghua Zhang

  2. 5

    Sé que esto es viejo, pero quiero señalar que cuando se crea un UIScrollView en el código de la cosa más importante a establecer es:

    scrollView.scrollEnabled = YES;

    Si no que, su contentSize es irrelevante.

    Esto es mucho mejor preparado para ser un comentario, en lugar de una respuesta. En cualquier caso se trata de publicidad engañosa: como indicado en la documentación, el valor predeterminado para scrollEnabled es YES. no necesita para establecer scrollEnabled a YES en el código, a menos que usted haya establecido previamente a NO.
    No estoy de acuerdo. Funciona como una respuesta también. (Y se acaba de resolver mi problema. Gracias Chris.) Un montón de gente desplácese hacia abajo buscando respuestas, y no leer todos (o cualquier) de los comentarios, a menos que la respuesta conduce a ellos. A veces estás trabajando con código escrito por otro y puede no estar familiarizado con todo.
    Me tuvieron que poner la mina en SÍ para llegar a desplazarse.

    OriginalEl autor Chris

  3. 4

    la janky manera de hacer esto es establecer siempre la contentSize a ser más grande que la del tamaño de la vista. Pero hay una propiedad en Swift que permite un scrollview para siempre «desplazamiento», independientemente del tamaño del contenido:

    scrollView.alwaysBounceVertical = true

    Hay uno para el desplazamiento horizontal así

    OriginalEl autor Marc Haumann

  4. 0

    de desplazamiento ver el tamaño del contenido debería ser más que un scrollView marco de la anchura y la altura

    hacer esto –

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

    Creo que será de ayuda.

    lo que si es el mismo?
    No permitirá desplazarse, si desea barra de desplazamiento para desplazarse , el tamaño del contenido debe ser más que el tamaño de fotograma

    OriginalEl autor mithilesh

  5. 0

    Si usted está tratando de establecer esta usando IB, a continuación, asegúrese de que su UIScrollView de la Altura de la propiedad es menor que su contentView de la Altura de la propiedad. Por ejemplo, si ha establecido la altura de su contentView a 810 pts asegúrese de establecer su UIScrollView la altura a algo así como el 610 puntos o así.

    OriginalEl autor Askar Hussain

Dejar respuesta

Please enter your comment!
Please enter your name here