Question

En ce qui concerne le SDK pour iPhone:

J'ai une image .png de 512 x 512 pixels et je souhaite l’afficher dans un format UIImageView WITH de 200 x 200 pixels (avec une résolution native, sans zoom, adaptation ni rotation). Existe-t-il un moyen de déterminer les coordonnées de l'image visibles dans UIImageView?

Par exemple, si l'image se trouve exactement au centre de UIImageView, je souhaite connaître les coordonnées de cette image aux points (0,0) et (200 200) de UIImageView, qui seront (156,156) et ( 356, 356), respectivement pour l’image affichée.

Je prévois de mettre en œuvre & pan; pan " et " zoom " fonctions à un moment donné, mais je veux savoir comment régler ce problème en premier. La référence de la classe UIImageView ne semblait pas utile ... J'espérais éviter d'utiliser UIView, mais si cela est nécessaire, je choisirai cette voie.

Merci!

Était-ce utile?

La solution 2

Merci pour votre aide. La mise au point des fonctionnalités de panoramique / zoom est devenue triviale après la mise en œuvre de UIScrollView. La mise en œuvre de UIScrollView me permet de déterminer les coordonnées dont j'avais besoin avec les valeurs myScrollView.bounds.origin.x et myScrollView.bounds.origin.y ... le zoom nécessite toujours un calcul - comme vous l'avez dit plus haut, mais je suis sur la bonne voie maintenant.

voici le code que j'ai utilisé pour créer UIScrollView (basé sur plusieurs sources disponibles sur le réseau et sur ce site - le site Web de Apple ScrollViewSuite était particulièrement utile. Voici le code que j'ai utilisé dans la section (void) viewDidLoad de mon programme, espérons que d'autres le trouveront 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];

Autres conseils

Vous avez raison à propos de ce que vous avez vu dans la référence UIImageView - il n’existe pas de moyen facile de le faire en utilisant uniquement UIImageView. Vous devez tenir compte d'éléments tels que le contentMode de UIImageView ou vous limiter à calculer la position d'un seul UIViewContentMode.

Cependant, lorsque vous finirez par implémenter les panoramiques et les zooms, vous utiliserez un UIScrollView avec un UIImageView en tant que sous-vue de ce UIScrollView. À ce stade, il serait plus sain de dimensionner votre UIImageView à la taille de l’image que vous affichez (elle peut être dynamique). Vous pouvez ensuite déterminer où se trouve l'image en déterminant où se trouve la vue , ce que vous pouvez accomplir beaucoup plus simplement et simplement avec un peu de calcul.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top