Хорошо, я работаю над решением этой проблемы весь день, и я очень близко подхожу. Я пытаюсь создать способ просмотра нескольких вложенных пар 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 ... странно