Question

J'ai un UIImageView qui affiche une image plus grande. Il semble être centrée, mais je voudrais proposer cette image à l'intérieur qui UIImageView. Je regardais le MoveMe échantillon d'Apple, mais je ne pouvait pas comprendre comment ils le font. Il semble qu'ils ne sont même pas un UIImageView pour cela. Toutes les idées?

Était-ce utile?

La solution

Réponse originale a été remplacée par CoreAnimation dans iOS4.

Alors que Gold Thumb dit: vous pouvez le faire en accédant à CALayer du UIView. Plus précisément son contentRect:

De la d'Apple Docs : le rectangle, dans l'unité de coordonnées de l'espace, qui définit la partie du contenu de la couche qui doit être utilisé. Animatable.

Autres conseils

Qu'est-ce que vous avez besoin est quelque chose comme (montrant par exemple les 30% de 30% du coin supérieur gauche de l'image d'origine):

imageView.layer.contentsRect = CGRectMake(0.0, 0.0, 0.3, 0.3);

Description "contentsRect": Le rectangle, dans l'unité de coordonnées de l'espace, qui définit la partie du contenu de la couche qui doivent être utilisés.

Voulez-vous afficher l'image afin qu'il soit contenu dans le UIImageView ? Dans ce cas, il suffit de changer la contectMode de UIImageView à UIViewContentModeScaleToFill (si le ratio d'aspect est sans conséquence) ou UIViewContentModeScaleAspectFit (si vous voulez maintenir le ratio d'aspect)

Dans IB, cela peut être fait en réglant le mode dans l'inspecteur.

Dans le code, il peut être fait comme

yourImageView.contentMode = UIViewContentModeScaleToFill;

Si vous souhaitez afficher la grande image est à l'intérieur d'un UIImageView , le meilleur et le plus simple de le faire serait d'avoir la vue de l'image dans un UIScrollView. Cette façon vous pourrez zoomer et dézoomer dans l'image et déplacer aussi autour.

L'espoir qui aide.

Il ne ressemble pas à l'échantillon de MoveMe fait quelque chose comme ce que vous voulez. Le PlacardView en est la même taille que l'image utilisée. Le seul changement de taille fait pour c'est une vue de la transformation, qui n'a pas d'effet la fenêtre de l'image. Si je comprends bien, vous avez une grande image, et que vous voulez montrer une petite fenêtre en elle. Il n'y a pas une méthode simple de classe pour ce faire, mais il y a une fonction que vous pouvez utiliser pour obtenir les résultats souhaités. CGImageCreateWithImageInRect (CGImageRef, CGRect) vous aider

Voici un court exemple utiliser:

CGImageRef imageRef = CGImageCreateWithImageInRect([largeImage CGImage], cropRect);
[UIImageView setImage:[UIImage imageWithCGImage:imageRef]];
CGImageRelease(imageRef);

Merci beaucoup. J'ai trouvé une solution assez simple qui ressemble à ceci:

CGRect frameRect = myImage.frame;
CGPoint rectPoint = frameRect.origin;
CGFloat newXPos = rectPoint.x - 0.5f;
myImage.frame = CGRectMake(newXPos, 0.0f, myImage.frame.size.width, myImage.frame.size.height);

Je propose que le cadre autour. Il arrive que des parties de cette trame sortent du port de vue de l'iPhone, mais j'espère que ce ne sera pas beaucoup d'importance. Il y a un masque sur elle, il ne semble pas bizarre. L'utilisateur ne totice pas comment il est fait.

Vous pouvez accomplir la même chose en:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top