UIImageView игнорирует мои настройки ContentMode - PullRequest
0 голосов
/ 13 марта 2012

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

В моем приложении у меня есть массив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 (в пределах прокрутки) - это увеличенное изображение центра изображения, независимо от того, на что я изменяю режим содержимого.

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

Ответы [ 3 ]

1 голос
/ 14 марта 2012

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

0 голосов
/ 09 марта 2016

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

0 голосов
/ 13 марта 2012

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

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

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

...