Я хотел бы иметь два масштабируемых UIImageViews ... в одном представлении, но я не могу заставить его работать! - PullRequest
1 голос
/ 07 марта 2011

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

Это кажется довольно простым, но я просто не могу заставить его работать.Я настроил пары ScrollView / ImageView в IB и подключил их нормально.Теперь мой код viewDidLoad выглядит так:

-(void) viewDidLoad
{
// set the image to be displayed, pic your own image here

imageView = [[MyImage alloc] initWithImage: [UIImage imageNamed: @"newBackground.png"]];

// yes we want to allow user interaction

[imageView setUserInteractionEnabled:YES];

// set the instance of our myScrollView to use the main screen

scrollView = [[MyScroll alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

// turn on scrolling

[scrollView setScrollEnabled: YES];

// set the content size to the size of the image

[scrollView setContentSize: imageView.image.size];

// add the instance of our myImageView class to the content view

[scrollView addSubview: imageView];

// flush the item

[imageView release];

// set max zoom to what suits you

[scrollView setMaximumZoomScale:1.0f];

// set min zoom to what suits you

[scrollView setMinimumZoomScale:0.25f];

// set the delegate

[scrollView setDelegate: self];

// scroll a portion of image into view (my image is very big) :)

//[scrollView scrollRectToVisible:CGRectMake(100, 100, 320, 440) animated:NO];

// yes to autoresize

scrollView.autoresizesSubviews = YES;

// set the mask

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

// set the view

//self.view =scrollView;

[scrollView setFrame:CGRectMake(0, 0, 320, 240)];

self.view =scrollView;

imageView1 = [[MyImage alloc] initWithImage: [UIImage imageNamed: @"newBackground.png"]];

// yes we want to allow user interaction

[imageView1 setUserInteractionEnabled:YES];

// set the instance of our myScrollView to use the main screen

scrollView1 = [[MyScroll alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

// turn on scrolling

[scrollView1 setScrollEnabled: YES];

// set the content size to the size of the image

[scrollView1 setContentSize: imageView1.image.size];

// add the instance of our myImageView class to the content view

[scrollView1 addSubview: imageView1];

// flush the item

[imageView1 release];

// set max zoom to what suits you

[scrollView1 setMaximumZoomScale:1.0f];

// set min zoom to what suits you

[scrollView1 setMinimumZoomScale:0.25f];

// set the delegate

[scrollView1 setDelegate: self];

// scroll a portion of image into view (my image is very big) :)

//[scrollView scrollRectToVisible:CGRectMake(100, 100, 320, 440) animated:NO];

// yes to autoresize

scrollView1.autoresizesSubviews = YES;

// set the mask

scrollView1.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

// set the view

//self.view =scrollView;

[scrollView1 setFrame:CGRectMake(0, 300, 320, 220)];

//I do this only because I don't know what else to do. This effectively adds the scrollview to the scrollview...
self.view =scrollView1;

И первый scrollView загружается, но затем второй вкладывается в него!Я попытался сделать [self.view addSubView:scrollView1];, но это просто привело к падению приложения.Я стараюсь изо всех сил, чтобы действительно покопаться и выяснить scrollViews, как могу, но я только что получил здесь.

Пожалуйста, помогите!

Спасибо

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

1 Ответ

1 голос
/ 07 марта 2011

Вам необходимо добавить оба вида прокрутки как подпредставления представления ViewController (self.view):

[self.view addSubview:scrollView];
[self.view addSubview:scrollView1];

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

...