2012-03-13 4 views
0

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

В моем приложении у меня есть массив UIImages, которые фактически уменьшают фотографии, сделанные камерой iPhone.

Я пытаюсь показать UIImage в scrollView, правильно масштабированный, чтобы показать все изображение.

Это мой код:

scrollView.pagingEnabled = YES; 
scrollView.clipsToBounds = NO; 

CGFloat contentOffset = 0.0f; 

pageControl.numberOfPages = [imageArray count]; 
pageControl.currentPage = 0; 

for(UIImage *image in imageArray) 
{ 
    NSLog(@"image width = %f, image height = %f", image.size.width, image.size.height); 

    CGRect imageViewFrame = CGRectMake(contentOffset, 0, scrollView.frame.size.width,     scrollView.frame.size.height); 

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:imageViewFrame]; 
    [imageView setImage:image]; 
    [imageView setClipsToBounds:YES]; 
    [imageView setContentMode:UIViewContentModeScaleAspectFill]; //I've tried others, but nothing seems to show the entire image 
    [scrollView addSubview:imageView]; 
    [imageView release]; 
    contentOffset += scrollView.frame.size.width; 
    [scrollView setContentSize:CGSizeMake(contentOffset, 0)]; 
} 

Просто к сведению, это портрет-ориентированные приложения и само изображение было принято в портретной ориентации.

Выход NSLog:

image width = 387.200012, image height = 518.400024 

Образ, который я вижу, показать на UIImageView (в пределах Scrollview) является увеличенным до изображения центра изображения, независимо от того, что я изменить contentmode к ,

Что я здесь делаю неправильно? Спасибо!

+0

Режим содержимого не работает, если вы масштабируете изображение. –

ответ

1

Ответ, о котором я говорил ранее: коэффициент масштабирования UIImage заставлял ContentMode не работать. Или, по крайней мере, заставило его работать.

0

Вы установили размер содержимого для Scrollview с высотой 0 и contentOffset как ширина ..., что, очевидно, не может работать.

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

То, что вы, видимо, хотите сделать, это установить рамку ImageView к contentOffset в п раз ширину экрана, так что вы можете прокручивать по горизонтали через образы. Таким образом, установите размер UIImageView на размер вашего экрана и его начало (n * screenSize.width, 0), а размер содержимого прокрутки - ((n + 1) * screenSize.width, screenSize.height), причем n является числом изображений.

+0

На самом деле, scrollview работает отлично, это просто, что изображение не уважает contentmode. Я нашел проблему, хотя. У UIImage был масштабный коэффициент 5, который я установил ранее в программе. Исправлено это исправление проблемы. Благодаря! – kurisukun

0

Я знаю, что это было задано и ответили, но, похоже, в последнее время есть другая причина. По состоянию на tvOS 9.1, установка adjustsImageWhenAncestorFocused, похоже, делает contentMode устаревшей (возможной ошибкой) для UIImageView. Я надеюсь, что это помогает кому-то.

Смежные вопросы