UIScrollView не прокручивается, хотя contentSize меньше, чем UIImageView - PullRequest
7 голосов
/ 17 января 2012

Итак, у меня есть UIImageView в качестве подпредставления UIScrollView, я установил contentSize меньше, чем UIImageView ширина и высота, однако это не позволяет мне прокручивать .. почемуэто?Вот некоторый код:

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

Есть идеи?

Ответы [ 5 ]

11 голосов
/ 17 января 2012

Это потому, что ваш размер границ прокрутки больше, чем размер вашего контента. Размер содержимого должен быть фактическим размером представления изображения, а видимый размер задается рамками / границами. Я полагаю, вы хотите прокрутить изображение в прямоугольнике размером {200, 200}? Попробуйте это:

        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
5 голосов
/ 13 марта 2013

Я знаю, что это старая версия, но я хочу отметить, что при создании кода UIScrollView наиболее важная настройка:

scrollView.scrollEnabled = YES;

Если вы не установите это, ваш contentSize не имеет значения.

4 голосов
/ 07 марта 2016

Нежелательный способ сделать это - всегда устанавливать contentSize больше размера представления. Но в Swift есть свойство, которое позволяет scrollview всегда «прокручиваться» независимо от размера контента:

scrollView.alwaysBounceVertical = true

Также есть вариант для горизонтальной прокрутки

0 голосов
/ 31 июля 2014

Если вы пытаетесь установить это с помощью IB, убедитесь, что свойство Height вашего UIScrollView установлено на меньшее число, чем свойство Height вашего contentView. Например, если вы установили высоту вашего contentView на 810 пунктов, убедитесь, что вы установили высоту вашего UIScrollView на что-то вроде 610 пунктов или около того.

0 голосов
/ 17 января 2012

размер содержимого представления прокрутки должен быть больше ширины и высоты кадра scrollView
сделать это -

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

Я думаю, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...