Ich versuche, eine Animation in meiner iOS-App zu erstellen, wo eine neue Ansicht auf dem Bildschirm von links verschoben wird, während die Hauptansicht nach rechts verschoben wird. Die Hauptansicht ist eine Unteransicht der Draufsicht meines Ansichtscontrollers und die einschiebbare Seitenansicht wird aus einer separaten XIB-Datei geladen.Versuchen, zwei UIViews gleichzeitig zu animieren, bewegt sich nur
Falls relevant es ist, hier ist mein Code die Seitenansicht für das Laden von meinem Haupt-View-Controller-Methode viewDidLoad genannt:
sideViewController = [[SideViewController alloc] init];
[sideViewController loadView];
sideView = sideViewController.topView;
[self.view addSubview:sideView];
sideView.hidden = YES;
sideView.frame = CGRectMake(-200, 0, 200, 460);
Und hier ist der Code, der die beiden Ansichten zu animieren aufgerufen wird:
sideView.hidden = NO;
[UIView animateWithDuration:0.25f
animations:^{
mainView.frame = CGRectMake(200, 0, 320, 460);
sideView.frame = CGRectMake(0, 0, 200, 460);
}];
Das scheint einfach genug. Aber aus irgendeinem Grund animiert nur SideView - mainView bewegt sich nirgendwohin. Und um die Dinge noch verwirrender zu machen, wenn ich die Zeile in dem Animationsblock auszeichne, der sideView bewegt, beginnt die Animation für mainView zu arbeiten.
Weiß jemand, was los ist? Von all den Suchen und Dokumenten, die ich gelesen habe, sollte das, was ich mache, gut funktionieren. Was ich für eine einfache Animation hielt, hat sich in frustrierende Stunden verwandelt. Jede Hilfe würde sehr geschätzt werden!
Edit:
aus der Anregung des Guo Luchuan Gehen habe ich versucht, verschiedene Eigenschaften der beiden UIViews Animieren. Die meisten haben das gleiche Ergebnis, obwohl beide Transformationseigenschaften animiert wurden fast funktioniert. In diesem Fall wurden beide UIViews animiert, aber das mainView hat nur das falsche getan: seine Animation begann damit an einer anderen Position und endete an der falschen Stelle. Es sieht aus wie es die Übersetzung durchführen ich es zu tun angewiesen, aber an dieser Stelle in Vektorberechnungen ausgedrückt beginnen:
starting_point - 0.5 * total_translation
was bedeutet, es endet um:
starting_point + 0.5 * total_translation
Die Seitenansicht jedoch richtig beseelt.
Das ist verdammt nervig. Mir war nicht klar, dass die Animationen auf iOS auf diese Weise so kaputt waren. Das nächste, was ich versuchen werde, ist CABasicAnimation, obwohl ich unglücklich bin, muss ich versuchen, solch eine Low-Level-API für etwas so einfaches zu versuchen.
Ich hatte das gleiche Problem und hatte auch AutoLayout eingeschaltet. Das Ausschalten hat mir leider nicht geholfen .... obwohl ich den Ort, an dem du ihn global abschaltest, vielleicht verpasst habe (ich baue meine Bildschirme mit Code). Eine Lösung, die ich gefunden habe, war, beide Ansichten in eine übergeordnete Containeransicht einzubetten und sie einfach zu animieren. – avance