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