2009-11-28 3 views
0

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

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

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

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

Спасибо!

ответ

0

Благодарим за помощь. Разработка функций панорамирования/масштабирования стала тривиальной после реализации 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]; 
0

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

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

Смежные вопросы