2014-03-14 7 views
20

Ich möchte eine Animation erstellen, die die Größe einer UIView und ihres Inhalts um einen Faktor ändert. Grundsätzlich möchte ich eine Animation machen, die zuerst die Ansicht erweitert und dann auf die ursprüngliche Größe zurückschrumpft.Erstellen einer Animation zum Erweitern und Verkleinern einer UIView

Was ist der beste Weg, dies zu tun? Ich habe versucht CALayer.contentScale, aber es hat überhaupt nichts getan.

+0

Im Zusammenhang mit http://StackOverflow.com/Questions/5446899/Scale-Zoom-into-Auiview-At-Apoint oder http://StackOverflow.com/Questions/18329286/How-to-Scale -zoom-a-uiview-zu-einem-gegebenen-cgpoint? lq = 1? – tophyr

Antwort

44

können verschachtelt einige Animation Blöcke zusammen etwa so:

Objective-C:

[UIView animateWithDuration:1 
       animations:^{ 
        yourView.transform = CGAffineTransformMakeScale(1.5, 1.5); 
       } 
       completion:^(BOOL finished) { 
        [UIView animateWithDuration:1 
             animations:^{ 
              yourView.transform = CGAffineTransformIdentity; 

             }]; 
       }]; 

Swift 2.0:

UIView.animateWithDuration(1, animations: {() -> Void in 
    yourView.transform = CGAffineTransformMakeScale(1.5, 1.5) 
    }) { (finished: Bool) -> Void in 
     UIView.animateWithDuration(1, animations: {() -> Void in 
      yourView.transform = CGAffineTransformIdentity 
     })} 

Swift 3.0:

UIView.animate(withDuration: 1, animations: { 
    yourView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5) 
}) { (finished) in 
    UIView.animate(withDuration: 1, animations: { 
     yourView.transform = CGAffineTransform.identity 
    }) 
} 

und Ersetzen der s cale Werte und Dauern mit Ihren eigenen.

8

Hier ist ein kleiner Ansatz, der auch Schleifen:

[UIView animateWithDuration:1 
         delay:0 
        options:UIViewKeyframeAnimationOptionAutoreverse | UIViewKeyframeAnimationOptionRepeat 
       animations:^{ 
        yourView.transform = CGAffineTransformMakeScale(1.5, 1.5); 
       } 
       completion:nil]; 

Die Option UIViewKeyframeAnimationOptionRepeat ist, was es Schleife macht, wenn Sie es nicht wollen „Atmen“ zu halten. Der Animationsblock dient als "Inhalieren" und die Option UIViewKeyframeAnimationOptionAutoreverse spielt automatisch die "Ausatmen" -Animation.