Как реализовать два отдельных UIScrollViews с вложенными UIImageViews ... только один масштабирование - PullRequest
0 голосов
/ 05 марта 2011

Хорошо, я работаю над решением этой проблемы весь день, и я очень близко подхожу. Я пытаюсь создать способ просмотра нескольких вложенных пар scrollView / imageView, который позволяет увеличивать изображение.

Когда загружается представление, есть только один scrollView, который занимает весь экран, но затем, когда нажимается кнопка, я урезал ширину первого scrollView пополам, и развернул другой (в котором есть вложенный imageView в нем) а также) прямо рядом с ним. Таким образом, существует эффект разделения вида, и в идеале пользователь сможет сжимать и масштабировать каждое изображение отдельно.

Так что у меня есть все, что работает, за исключением отдельной части увеличения и увеличения. Независимо от того, где я нажимаю на экран, масштабируется только первый scrollView. Так что, хотя я касаюсь другого scrollView, он все еще влияет только на первый.

У меня они настроены в IB, а затем они настроены в viewDidLoad следующим образом:

[scrollView setBackgroundColor:[UIColor blackColor]];
[scrollView setCanCancelContentTouches:NO];
scrollView.clipsToBounds = YES;    // default is NO, we want to restrict drawing within our scrollview
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;

scrollView.minimumZoomScale = 1;
scrollView.maximumZoomScale = 5;
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];

imageView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"monitor.JPG"]];

[scrollView addSubview:imageView3];
//[scrollView setFrame:CGRectMake(0, 0, 1024, 660)];


[scrollView1 setBackgroundColor:[UIColor blackColor]];
[scrollView1 setCanCancelContentTouches:NO];
scrollView1.clipsToBounds = YES;    // default is NO, we want to restrict drawing within our scrollview
scrollView1.indicatorStyle = UIScrollViewIndicatorStyleWhite;

scrollView1.minimumZoomScale = 1;
scrollView1.maximumZoomScale = 5;
scrollView1.delegate = self;
[scrollView1 setScrollEnabled:YES];

imageView31 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"monitor.JPG"]];

[scrollView1 addSubview:imageView31];

А потом я скрываю и показываю разные scrollViews (у меня 40 в зависимости от индекса segmentedControl на панели инструментов. Я двигаюсь в правильном направлении? Можно ли иметь два отдельно доступных scrollViews?

Любая помощь будет оценена.

Спасибо!

EDIT:

Хорошо, поэтому я просмотрел и обновил бит clipToBunds ... DUH. Это определенно делает его лучше, но все еще не решает проблему. Вот код, который я звоню в зависимости от выбранного индекса:

-(void) pickedOne{


if(segment.selectedSegmentIndex == 0){

    [scrollView setFrame:CGRectMake(0, 0, 1024, 660)];
    [scrollView setContentSize:CGSizeMake(1024, 660)];
    scrollView.hidden = NO;

    scrollView1.hidden = YES;
    scrollView2.hidden = YES;
    scrollView3.hidden = YES;

}else if(segment.selectedSegmentIndex == 1){

    [scrollView setFrame:CGRectMake(0, 0, 512, 660)];
    scrollView.zoomScale = 1.0;
    scrollView.hidden = NO;


    [scrollView1 setFrame:CGRectMake(512, 0, 512, 660)];
    scrollView1.zoomScale = 1.0;
    scrollView1.hidden = NO;

            scrollView2.hidden = YES;
            scrollView3.hidden = YES;

}

Что-то не так с этим подходом?

Если я ущипну, чтобы увеличить масштаб правого scrollView, он увеличит представление прокрутки (но не увеличит размер изображения scrollView2), но при этом увеличит размер первого изображения scrollView, когда вы ущипнете EITHER scrollViews ... странно

1 Ответ

1 голос
/ 05 марта 2011
scrollView.clipsToBounds = NO;    // default is NO, we want to restrict drawing within our scrollview

Разве это не противоположно тому, что вы хотите? Установка YES ограничивает ограничения рисования в пределах вашего прокрутки.

Мне кажется, что вы не изменяете размер прокрутки. Вы изменяете его содержимое или вид изображения в нем? Можете ли вы опубликовать код, который вызывается при нажатии на кнопку?

...