Frage

Ich habe eine UIImageView, die ein größeres Bild anzeigt. Es scheint zentriert zu sein, aber ich möchte das Bild innerhalb dieses UIImageView bewegen. Ich sah die MoveMe Probe von Apple, aber ich konnte nicht herausfinden, wie sie es tun. Es scheint, dass sie nicht einmal eine UIImageView dafür. Irgendwelche Ideen?

War es hilfreich?

Lösung

Original Antwort wird von Coreanimation in iOS4 ersetzt.

So wie Gold-Thumb sagt: Sie können dies tun, indem die UIView des CALayer erreichbar. Insbesondere seine contentRect:

Aus dem Apple-Docs : Das Rechteck, in der Einheit Raumkoordinate, das definiert, um den Teil des Inhalts der Schicht, die verwendet werden soll. Anima.

Andere Tipps

Was Sie brauchen, ist so etwas wie (zum Beispiel des 30% bis 30% der oberen linken Ecke des Originalbildes angezeigt):

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

Beschreibung von "contentsRect": Das Rechteck, in der Einheit Koordinatenraum, der den Teil der Schicht des Inhalts definiert, der verwendet werden soll.

Wollen Sie , um das Bild anzuzeigen, so dass es in der UIImageView enthalten ist ? In diesem Fall nur die contectMode von UIImageView UIViewContentModeScaleToFill ändern (wenn Seitenverhältnis ist belanglos) oder UIViewContentModeScaleAspectFit (wenn Sie das Seitenverhältnis beibehalten)

In IB, kann dies durch Setzen des Modus in Inspektoren erfolgen.

Im Code, kann es als getan wird

yourImageView.contentMode = UIViewContentModeScaleToFill;

Falls Sie das große Bild anzuzeigen, wie in einem UIImageView ist die beste und einfachste Weg, dies zu tun wäre, die Bildansicht in einem UIScrollView zu haben. Dass Weise werden Sie in der Lage sein, in der und aus in dem Bild zoomen und es auch bewegen.

Ich hoffe, das hilft.

Es klingt nicht wie die MoveMe Probe etwas tut wie das, was Sie wollen. Die PlacardView in es ist die gleiche Größe wie das Bild verwendet. Die einzige Größe ändern, um es getan ist eine Ansicht zu verwandeln, das nicht das Ansichtsfenster des Bildes nicht beeinflusst. Wie ich es verstehe, haben Sie ein großes Bild, und wollen ein kleines Bildfenster hinein zeigen. Es gibt keine einfache Klasse Methode, dies zu tun, aber es gibt eine Funktion, dass Sie die gewünschten Ergebnisse erzielen verwenden könnten. CGImageCreateWithImageInRect (CGImageRef, CGRect) werden Ihnen helfen,

Hier ist ein kurzes Beispiel mit ihm:

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

Vielen Dank. Ich habe eine ziemlich einfache Lösung gefunden, die wie folgt aussieht:

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

Ich bewege nur den Rahmen um. Es kommt vor, dass Teile dieses Rahmens der Ansicht Anschluss des iPhone gehen, aber ich hoffe, dass dies nicht viel aus. Es gibt eine Maske über sie, so dass es nicht seltsam aussehen. Der Benutzer nicht totice wie es gemacht wird.

Sie können das gleiche erreichen durch:

UIImageView *imgVw=[[UIImageView alloc]initwithFrame:CGRectMake(x,y,height,width)];     
imgVw.image=[UIImage imageNamed:@""];
[self.view addSubView imgVw];
imgVw.contentMode = UIViewContentModeScaleToFill;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top