UIImageView / UIScrollView принуждение фиксированного соотношения сторон экрана к экрану

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

Это изображение помещается в UIImageView , который затем помещается в UIScrollView .

Навигация и масштабирование работают на 100% нормально; однако изображение загружается с фиксированным соотношением сторон, чтобы соответствовать экрану, и никогда не изменится (даже при увеличении масштаба).

У меня такое ощущение, что Interface Builder устанавливает какое-то свойство, о котором я не знаю, но я пробовал все, что мог придумать, чтобы исправить это.

Проблема:

Когда приложение изначально загружается, содержимое внутри UIScrollView автоматически меняет размер, чтобы точно соответствовать экрану iPad, за счет изменения его соотношения сторон. / исправлено; фактическое изображение гигантское (намного больше, чем разрешение iPad). Это масштабируемое соотношение сторон сохраняется даже при увеличении изображения и приводит к тому, что изображение выглядит растянутым.

Независимо от того, что я пытаюсь, я не могу остановить автоматическое изменение масштаба изображения iPad. Я просто хочу, чтобы приложение запускалось с моим изображением, отображаемым на iPad в обычном режиме (100% масштаб), при этом часть, которая в настоящее время умещается на экране iPad, является верхним левым углом изображения.

Что я пытался сделать почини это:

Я попытался изменить режим содержимого UIImageView в Interface Builder на «Верхний левый». Казалось, что это работает отлично, но потом я понял, что UIScrollView не позволит вам прокручивать изображение за пределами первоначально отображаемой части (вверху слева). Вы можете увеличивать левую верхнюю часть и прокручивать, но никогда не выходить за пределы того, что изначально было показано на экране.

Код:

Вот код, который я использую для настройки представлений. imageScrollView - это UIScrollView , а imageView - это UIImageView . Они оба IBOutlets .

   // Set the needed attributes of the imageView
    [imageView setImage:[UIImage imageNamed: @"TestImage.png"]];
    imageView.userInteractionEnabled = YES;

    // Set a bunch of the imageScrollView attributes.

    // calculate minimum scale to perfectly fit image width, and begin at that scale
    float minimumScale = [imageScrollView frame].size.width  / [imageView frame].size.width;
    [imageScrollView setMinimumZoomScale:minimumScale];
    [imageScrollView setZoomScale:1];
    [imageScrollView setMaximumZoomScale:10];
    [imageScrollView setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
    [imageScrollView setScrollEnabled:YES];
    [imageScrollView setUserInteractionEnabled:YES];
    imageScrollView.clipsToBounds = YES;
    imageScrollView.bounces = FALSE;
    imageScrollView.bouncesZoom = FALSE;

У меня также есть два UIGestureRecongizers для обработки масштабирования касанием, но я не думаю, что это проблема. Когда я их комментирую, ничего не меняется.

Любая помощь будет чрезвычайно оценена.

10
задан Rajneesh071 5 December 2012 в 15:46
поделиться