Come determinare le coordinate dell'immagine per un'immagine ritagliata di grandi dimensioni all'interno di UIImageView?

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

Domanda

Per quanto riguarda l'SDK per iPhone:

Ho un'immagine .png da 512 x 512 pixel e desidero visualizzarla in un UIImageView 200 x 200 pixel CON ritaglio (a risoluzione nativa, senza zoom, adattamento o rotazione). C'è un modo per determinare le coordinate dell'immagine che sono visibili all'interno di UIImageView?

Ad esempio, se l'immagine si trova esattamente al centro di UIImageView, allora voglio sapere quali sono le coordinate dell'immagine ai punti (0,0) e (200.200) di UIImageView, che saranno (156.156) e ( 356.356), rispettivamente per l'immagine visualizzata.

Ho intenzione di implementare " pan " e " zoom " funzioni ad un certo punto, ma voglio sapere prima come affrontare questo problema. Il riferimento alla classe UIImageView non mi è sembrato utile ... Speravo di evitare di usare una UIView, ma se è necessario andrò su quella rotta.

Grazie!

È stato utile?

Soluzione 2

Grazie per l'aiuto. Elaborare le funzioni di panoramica / zoom è diventato banale dopo aver implementato UIScrollView. L'implementazione di UIScrollView mi consente di determinare le coordinate di cui avevo bisogno con i valori myScrollView.bounds.origin.x e myScrollView.bounds.origin.y ... lo zoom richiede ancora calcoli - come hai detto sopra, ma ora sono sulla buona strada.

ecco il codice che ho usato per rendere UIScrollView (basato su più fonti disponibili in rete e su questo sito - ScrollViewSuite è stato particolarmente utile. Ecco il codice che ho usato nella sezione (void) viewDidLoad del mio programma, speriamo che altri lo possano trovare utile :

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];

Altri suggerimenti

Hai ragione su ciò che hai visto dal riferimento UIImageView: non esiste un modo semplice per farlo usando solo UIImageView. Dovresti prendere in considerazione elementi come contentMode di UIImageView o limitarti a calcolare solo la posizione per un singolo UIViewContentMode.

Tuttavia, quando alla fine riuscirai a implementare la panoramica e lo zoom, utilizzerai un UIScrollView con un UIImageView come sottoview di tale UIScrollView. A quel punto, sarebbe più sensato dimensionare UIImageView inizialmente in base alle dimensioni dell'immagine che si sta visualizzando (potrebbe essere dinamica). Puoi quindi determinare dove si trova l'immagine determinando dove si trova l'immagine visualizza , che è qualcosa che puoi ottenere molto più semplicemente e con un po 'di matematica.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top