Поворот квадратного изображения в ScrollView - PullRequest
0 голосов
/ 24 августа 2011

У меня есть галерея UIImageViews (которые являются SQUARE), объявленные как подпредставления UIScrollView:

int size = self.view.frame.size.width/number;
int maxSize = [list count]; //amount of images to show in this view
imageViewArray = [[NSMutableArray alloc] init];

for (int i=0,j=1,k=0; i<maxSize; i++, j++){
   UIImageView *imageView = [[UIImageView alloc] initWithImage:[list objectAtIndex:i]];
   if (i % number == 0)
   {
      j = 1;
      k++;
   }
imageView.frame = CGRectMake((size*(j-1)), (size*(k-1)), size, size);
imageView.contentMode = UIViewContentModeScaleAspectFit;
[imageView setAutoresizingMask: UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth];
[imageScrollView addSubview:imageView];
imageScrollView.contentSize = CGSizeMake(size*number, size*(maxSize/number));
[imageScrollView setAutoresizesSubviews:YES];

В портретном режиме все в порядке. Однако в альбомной ориентации я хочу, чтобы мои изображения становились больше как по оси X, так и по оси Y. При вставленном коде мои изображения получают увеличенный кадр только по ширине, поэтому они являются широкими и короткими. Я хочу, чтобы они сохранили соотношение, чтобы оно оставалось квадратным. Есть идеи? ..

Кстати: я пытался настроить AutoresizingMask на гибкую высоту, верх и низ, но это делает мои UIImages еще короче (я не знаю, почему).

Ответы [ 2 ]

2 голосов
/ 24 августа 2011

Вы не хотите, чтобы ваши поля были гибкими, оставьте их фиксированными, вы только хотите, чтобы внутренняя высота / ширина были гибкими. Поэтому попробуйте установить только следующие два:

[imageView setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
0 голосов
/ 24 августа 2011

Вы писали, что изображения должны увеличиваться в размере в альбомной ориентации, так где вы настраиваете фреймы UIImageViews? (И если они становятся меньше, у вас есть ошибка в этом недостающем куске кода.)

И @gamozzii - это правильно, вы хотите, чтобы автоматическое изменение размера изображений:

imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
...