Próbuję utworzyć animację w mojej aplikacji na iOS, gdzie nowy widok przesuwa się po ekranie od lewej, a widok główny przesuwa się w prawo, aby zrobić dla niego miejsce. Widok główny jest widokiem z góry widoku z góry mojego kontrolera widoku, a widok boczny, który się ślizga, jest ładowany z oddzielnego pliku XIB.Próbuję jednocześnie animować dwa UIView, tylko jeden przesuwa
W przypadku jest to istotne, tu jest mój kod do załadowania widoku z boku, zwany od viewDidLoad sposobu mojego głównego sterownika widok na:
sideViewController = [[SideViewController alloc] init];
[sideViewController loadView];
sideView = sideViewController.topView;
[self.view addSubview:sideView];
sideView.hidden = YES;
sideView.frame = CGRectMake(-200, 0, 200, 460);
A oto kod, który zostaje wezwany do animowania dwa widoki:
sideView.hidden = NO;
[UIView animateWithDuration:0.25f
animations:^{
mainView.frame = CGRectMake(200, 0, 320, 460);
sideView.frame = CGRectMake(0, 0, 200, 460);
}];
Wydaje się to dość proste. Ale z jakiegoś powodu tylko animacje sideView - mainView nigdzie się nie porusza. Aby jeszcze bardziej zagmatwać rzeczy, jeśli skomentuję wiersz bloku animacji, który przesuwa sideView, animacja mainView zacznie działać.
Czy ktoś wie, co jest nie tak? Ze wszystkich wyszukiwań i dokumentów, które przeczytałem, to, co robię, powinno działać dobrze. To, co myślałem, że będzie prostą animacją, zmieniło się w godziny frustracji. Każda pomoc będzie doceniona!
Edit:
Pisali sugestii Guo Luchuan za Próbowałem animowanie różne właściwości dwóch UIViews. Większość uzyskała taki sam wynik, chociaż pracowała nad animacją obu ich właściwości przekształcania. W takim przypadku oba UIViews były animowane, ale mainView zrobił coś złego: animacja zaczęła się od niego w innej pozycji i kończyła w niewłaściwym miejscu. To wygląda jakby wykonując tłumaczenie poleciłem to zrobić, ale zaczynając od tego stanowiska wyrażonego w obliczeniach wektorowej:
starting_point - 0.5 * total_translation
co oznacza, że kończy się na:
starting_point + 0.5 * total_translation
boczne, jednak ożywia poprawnie.
To jest cholernie irytujące. Nie zdawałem sobie sprawy, że animacje wykonawcze na iOS są w ten sposób zepsute. Następną rzeczą, którą zamierzam wypróbować, jest użycie CABasicAnimation, chociaż jestem nieszczęśliwa, muszę uciekać się do wypróbowania tak niskiego poziomu API dla czegoś tak prostego.
Miałem ten sam problem, a także miałem włączone autoLayout. Wyłączenie tego niestety mi nie pomogło ... chociaż mogłem przegapić miejsce, w którym wyłączyłeś je globalnie (buduję ekrany z kodem). Jednym z rozwiązań, które znalazłem, było osadzenie obu widoków w widoku kontenera nadrzędnego i po prostu animacja tego. – avance