Как определить координаты изображения для большого обрезанного изображения в UIImageView?

StackOverflow https://stackoverflow.com/questions/1813432

Вопрос

Что касается iPhone SDK:

У меня есть изображение в формате png размером 512 x 512 пикселей, и я хочу отобразить его в UIImageView размером 200 x 200 пикселей С обрезкой (в собственном разрешении, без масштабирования, подгонки или поворота).Есть ли способ определить координаты изображения, которые видны внутри UIImageView?

Например, если изображение находится точно в центре UIImageView, то я хочу знать, каковы координаты изображения в точках UIImageView (0,0) и (200,200), которые будут (156,156) и (356,356) соответственно для отображаемого изображения.

В какой-то момент я планирую реализовать функции "панорамирования" и "масштабирования", но сначала я хочу знать, как решить эту проблему.Ссылка на класс UIImageView не показалась полезной...Я надеялся избежать использования UIView, но если это необходимо, я пойду этим путем.

Спасибо!

Это было полезно?

Решение 2

Спасибо за вашу помощь.Разработка функций панорамирования / масштабирования стала тривиальной после внедрения UIScrollView.Реализация UIScrollView позволила мне определить координаты, которые мне были нужны с помощью myScrollView.bounds.origin.x и myScrollView.bounds.origin.y ценности...масштабирование по-прежнему требует вычислений - как вы указали выше, но теперь я на правильном пути.

вот код, который я использовал для создания UIScrollView (на основе нескольких источников, доступных в сети, и этого сайта - Apple ScrollViewSuite Прокрутка просмотра было особенно полезно.Вот код, который я использовал в (void)viewDidLoad раздел моей программы, надеюсь, другие смогут найти его полезным:

UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[imageArray objectAtIndex:0]]; //imageArray is an array/stack of images...
[self setMyImage:tempImageView]; //myImage is of type UIImageView
[myImage setTag:100]; //set this to an 'arbitrary' value so that when I update the scrollview I can remove the current image...
[tempImageView release];

myScrollView.contentSize = CGSizeMake(myImage.frame.size.width, myImage.frame.size.height);
myScrollView.maximumZoomScale = 10.0;
myScrollView.minimumZoomScale = 0.15;
myScrollView.clipsToBounds = YES;
myScrollView.delegate = self;

[myScrollView addSubview:myImage];

Другие советы

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

Однако, когда вы в конечном итоге перейдете к реализации панорамирования и масштабирования, вы будете использовать UIScrollView с UIImageView в качестве подвида этого UIScrollView.На этом этапе было бы наиболее разумно изначально привязать ваш UIImageView к размеру любого отображаемого вами изображения (может быть динамическим).Затем вы можете определить, где находится изображение, определив, где находится изображение Вид это то, чего вы можете достичь гораздо проще и с помощью всего лишь небольшого количества математики.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top