In der App, die ich gerade bearbeite, tippt der Benutzer auf eine Tabellenansicht, um aus einer "Miniaturansicht" oder einer Miniaturansicht zur Vollansicht zu zoomen. Alles funktioniert gut außer einem etwas nervigen Animationsfehler oder was auch immer. Die Sache ist, ich bin mit dem folgenden Code:Alternative zu CGAffineTransformConcat
if ([subview respondsToSelector:@selector (name)] && [subview.name isEqualToString:self.labelListName.text])
{
[self.tabBarController.view addSubview:subview];
CGRect frame = CGRectMake(35, 78, self.scrollView.frame.size.width, self.scrollView.frame.size.height);
subview.frame = frame;
CGAffineTransform scale = CGAffineTransformMakeScale(1.39, 1.39);
CGAffineTransform move = CGAffineTransformMakeTranslation(0,44);
CGAffineTransform transform = CGAffineTransformConcat(scale, move);
[UIView animateWithDuration:0.15
delay:0
options:UIViewAnimationOptionBeginFromCurrentState
animations:^{
subview.transform = transform;
}
completion:^(BOOL finished){ [self goToList],subview.hidden = YES; }];
}
- (void)goToList
{
self.gotoWishList = [[WishList alloc] initWithNibName:@"WishList" bundle:nil];
self.gotoWishList.hidesBottomBarWhenPushed=YES;
self.gotoWishList.name = self.labelListName.text;
[self.navigationController pushViewController:self.gotoWishList animated:NO];
self.gotoWishList.scrollLists = self;
[WishList release];
}
Und wenn die Übertragung zwischen der Zoom-Ansicht, die der Animation zu tun und der aktuellen Ansicht der Benutzer zu interagieren werden ist nicht ganz perfekt. Der Text in der Zelle springt ein wenig, wenn zwischen den Ansichten gewechselt wird. Das Problem liegt in der Übersetzungsmatrix. Wenn ich das überspringe, kann ich die Animation perfekt funktionieren lassen, aber dann muss ich natürlich die Miniaturansicht in der GUI nach unten verschieben, was keine Option ist. Wenn ich stattdessen die Animationen in einer anderen Reihenfolge mache (bewegen, skalieren), dann funktioniert es besser. Ich bekomme immer noch einen Sprung am Ende, aber es sieht besser aus, als alles springt ... und nicht nur der Text.
Also ... im Grunde ist meine Frage, wie kann ich diese Animation fließend machen. Ich habe gelesen, dass die CGAffineTransformConcat jede Animation noch einzeln ausführt, und ich brauche wirklich beide Animationen (Skalierung und Verschieben der Liste), um EINE fließende Animation zu sein.
Danke für irgendwelche Tipps!
Nun, ich habe versucht, die Tabellenansicht in der Benutzeroberfläche zu verschieben, so dass es auf die volle Größe skalieren konnte, ohne es überhaupt zu verschieben und die Animation funktioniert dann gut (nur Skalierung, keine Übersetzung). Keine Artefakte oder irgendetwas. – Glitch