2013-05-22 4 views
6

Ich versuche, eine UIView-Animation zu machen, bei der mein Bild oben links auf dem Bildschirm beginnt und auf die Originalgröße erweitert und in der Mitte des Bildschirms platziert wird. Bisher war ich in der Lage, es separat zu machen, aber wenn ich versuche, diese Animationen zu kombinieren, wird es nur die Maßstabsanimation machen.Wie kombinierst du Scale und Translation Animation

Gibt es einen Weg, ich kann dies mit Maßstab und Übersetzung zur gleichen Zeit machen? Hier

ist das, was ich bisher:

CGAffineTransform setpointTrans = CGAffineTransformMakeTranslation(-200.0f, -200.0f); 
CGAffineTransform setpointScale = CGAffineTransformMakeScale(0.0f, 0.0f); 
_RSEImage.transform = CGAffineTransformConcat(setpointTrans, setpointScale); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(0.0f,0.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 

Ok ich es herausgefunden, hier ist das, was ich geändert:

_RSEImage.transform = CGAffineTransformMakeScale(0.0f, 0.0f); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(200.0f,200.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 
+0

Ich habe Ihren Code ausprobiert und er macht genau das, was Sie erreichen möchten: scale up und translate ... Was ist der Ursprungspunkt des RESImage vor diesem Code? – nzs

+0

x 160 y 242, ich denke, das ist, was Sie fragen, tut mir leid, das ist meine erste iPhone App. Die Bildgröße ist 161 x 71 –

+0

Es ist schwer zu sagen von diesem Code, wo Sie das Problem haben, weil im Grunde dieser Codeausschnitt funktioniert, ist dies die Art, wie Sie affine Transformation "merging". Ich schätze, ein anderer Teil deines Codes verhindert irgendwie die Übersetzung oder nicht sichtbar ... Fange an, die Funktionen schrittweise hinzuzufügen, indem du die Dinge auskommentierst, und überprüfe, ob bis zu diesem Punkt alles gut aussieht. Z.B. Überprüfen Sie dieses Snippet für die erste 3 Zeile mit 0.3f Skala und -100f Übersetzung - Sie sehen die img? Fügen Sie dann die Übersetzung hinzu, um die Parameter zu testen, und verschmelzen Sie mit der Skalierung. Sie können auch meine Antwort verwenden, da Blöcke einfacher sind. – nzs

Antwort

2

Sie diese verwenden können, Animation Blöcke, auch (von iOS4):

[UIView animateWithDuration: 5 
         delay: 0 
        options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{_RSEImage.center = CGPointMake(300, 300) ; _RSEImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);} 
       completion:^(BOOL finished) { } 
]; 

Relevante offizielle doc hier: link

Schönes Tutorial dort: link

Hoffe es hilft!

+0

, die das Bild nur auf das Doppelte skaliert hat, hat es das Bild immer noch nicht von der linken oberen Ecke in die Mitte verschoben. –

+0

Sthing seltsame passiert ... ;-) Was ist der Typ von _RSEImage, können Sie den Code teilen, wie Sie der Ansicht hinzufügen? oder irgendeinen anderen Code bezogen auf _RSEImage? – nzs

+0

Ich habe es herausgefunden und meine Frage bearbeitet, ich werde diese Blöcke lernen, es scheint viel einfacher. Danke für Ihre Hilfe. –

Verwandte Themen