Я делаю простое приложение для iPad, которое состоит из гигантского изображения, которое вы можете увеличивать / уменьшать и перемещать.
Это изображение помещается в UIImageView
, который затем помещаетсявнутри UIScrollView
.
Навигация и масштабирование работают на 100%;однако изображение загружается с фиксированным соотношением сторон, чтобы соответствовать экрану, и никогда не изменится (даже при увеличении).
У меня такое ощущение, что Interface Builder устанавливает какое-то свойство, которое яне знаю, но я попробовал все, что мог придумать, чтобы это исправить.
Проблема:
Когда приложение изначально загружается, содержимое внутриUIScrollView
автоматически изменяется в соответствии с размером экрана iPad, изменяя соотношение сторон ./fixed;фактическое изображение гигантское (намного больше, чем разрешение iPad).Это масштабированное соотношение сторон сохраняется даже при увеличении изображения и приводит к тому, что изображение выглядит растянутым.
Независимо от того, что я пытаюсь, я не могу остановить iPad от автоматического масштабирования моего изображения.Я просто хочу, чтобы приложение запускалось с моим изображением, отображаемым на iPad в нормальном режиме (с увеличением 100%), а верхний левый угол изображения - это часть, которая в настоящее время помещается на экране iPad.То, что я пытался это исправить:
Я пытался изменить UIImageView's
режим содержимого в Интерфейсном Разработчике на «Слева вверху».Казалось, это работает отлично, но потом я понял, что 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
, чтобы справиться с масштабированием, но я не верю, что они являются проблемой.Когда я их комментирую, ничего не меняется.
Любая помощь будет чрезвычайно оценена.