UIView animateWithDuration animiert keine cornerRadius-Variation
Ich versuche zu animieren, die änderung der cornerRadius
einer UIView
Instanz layer
aber die variation der cornerRadius
erfolgt sofort.
Hier der code:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)];
view.layer.masksToBounds = YES;
view.layer.cornerRadius = 10.0;
[UIView animateWithDuration:1.0 animations:^{
[view.layer.cornerRadius = 0.0;
}];
Dank alle, die ist gehen, um mir irgendwelche Tipps.
EDIT:
Ich es geschafft, animieren Sie diese Eigenschaft mit Core Animation
mit einem CABasicAnimation
.
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"cornerRadius"];
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.fromValue = [NSNumber numberWithFloat:10.0f];
animation.toValue = [NSNumber numberWithFloat:0.0f];
animation.duration = 1.0;
[viewToAnimate.layer addAnimation:animation forKey:@"cornerRadius"];
[animation.layer setCornerRadius:0.0];
InformationsquelleAutor der Frage singingAtom | 2011-05-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
tl;dr: Eckenradius ist nicht animierbar in
animateWithDuration:animations:
.Was die Dokumentation sagt über view-Animationen.
Als Abschnitt Animationen in der "View Programming Guide for iOS", sagt
Den vollständige Liste der Eigenschaftendass Sie animieren können, entweder mithilfe der älteren
oder die neuere
(dass Sie mit) sind:
Wie Sie sehen können,
cornerRadius
ist nicht in der Liste.Einige Verwirrung
UIView-Animationen ist wirklich nur dafür gedacht, animierend Eigenschaften anzeigen. Was die Menschen verwirrt, ist, dass können Sie auch animieren, die gleichen Eigenschaften auf die Ebene in der UIView animation-block, D. H. der Rahmen, Grenzen, position, Deckkraft, Hintergrundfarbe. Damit die Leute sehen, layer, Animationen in
animateWithDuration
und glauben, dass Sie animieren können alle view-Eigenschaft.Den gleichen Abschnitt geht auf zu sagen:
Ein paar Zeilen nach unten Lesen können Sie die Liste der Core-Animation, animierbare Eigenschaften, wo Sie sehen, dieses:
So zu animieren
cornerRadius
Sie müssen Core Animation, wie Sie bereits sagten in Ihrem aktualisierten Frage (und Antwort). Ich habe gerade versucht zu erklären, warum seine so.Einige zusätzliche Klarstellung
Wenn die Menschen Lesen Sie die Dokumentationen, die sagt, dass
animateWithDuration
ist die empfohlene Art der Animation ist es leicht zu glauben, dass es versucht, zu ersetzen CABasicAnimation, CAAnimationGroup, CAKeyframeAnimation, etc. aber es ist wirklich nicht. Seine Austausch derbeginAnimations:context:
undcommitAnimations
dass Sie oben gesehen.InformationsquelleAutor der Antwort David Rönnqvist
Ich diese Erweiterung verwenden zu animieren ändern des Eckenradius:
InformationsquelleAutor der Antwort ChikabuZ
Einer Ecke radius variation animiert werden können, aber der einzige Weg, dies zu tun, ist die Verwendung einer CABasicAnimation. Hoffe, dies hilft jemand da draußen.
InformationsquelleAutor der Antwort singingAtom
Können Sie implementieren UIView animation wie hier: http://maniacdev.com/2013/02/ios-uiview-category-allowing-you-to-set-up-customizable-animation-properties
InformationsquelleAutor der Antwort akaDuality
Nicht so aussieht, dass man von der animierbaren Eigenschaften.
Sehen Sie sich hier die vollständige Liste:
http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/AnimatingViews/AnimatingViews.html
InformationsquelleAutor der Antwort Chris
Können Sie diese Eigenschaft animiert werden in
+[UIView animateWithDuration:]
durch die Umsetzung-[actionForLayer:forKey]
im view-Klasse. Sehen diese Frage ein Beispiel dafür, wie.InformationsquelleAutor der Antwort Simon
Ab iOS 10 können Sie tatsächlich animieren cornerRadius:
InformationsquelleAutor der Antwort edwardmp