Mam UIImageView
zdjęcie. Teraz mam zupełnie nowy obraz (plik graficzny) i chcę go w tym wyświetlić UIImageView
. Jeśli tylko ustawię
myImageView.image = newImage;
nowy obraz jest natychmiast widoczny. Nie można animować.
Chcę, żeby ładnie zniknęło w nowym obrazie. Pomyślałem, że może jest lepsze rozwiązanie niż stworzenie nowego UIImageView
i połączenie go z animacją?
Odpowiedzi:
Nie jestem pewien, czy można animować UIViews z efektem zanikania, ponieważ wydaje się, że wszystkie obsługiwane przejścia widoków są zdefiniowane w
UIViewAnimationTransition
wyliczeniu. Efekt zanikania można uzyskać za pomocą CoreAnimation. Przykładowy przykład tego podejścia:źródło
to inna możliwość
źródło
Według słów Michaela Scotta, bądź głupi. Oto prosty sposób, aby to zrobić w Swift 3 i Swift 4 :
źródło
Oto jeden przykład w Swift , który najpierw rozpuści nowy obraz, a następnie doda sprężystą animację:
Jeśli
imageView
jest prawidłowo dodany do widoku jako podrzędny, przełączanieselected = false
sięselected = true
należy zamienić obraz z animacją nadmuchiwany.SNStockCellSelectionAccessoryViewImage
po prostu zwraca inny obraz na podstawie bieżącego stanu zaznaczenia, patrz poniżej:Poniższy przykład GIF jest nieco spowolniony, rzeczywista animacja odbywa się szybciej:
źródło
Kod:
Przykład:
Zabawne, bardziej szczegółowe rozwiązanie : ( Przełączanie jednym dotknięciem )
źródło
Spróbuj tego:
źródło
Z Swift 3
Stosowanie:
źródło
Dlaczego nie spróbować?
Szybka wersja:
źródło
setAnimationRepeatCount
źródło
Jest tu kilka różnych podejść: UIAnimacje do moich wspomnień brzmią jak twoje wyzwanie.
Edycja: zbyt leniwy wobec mnie :)
W poście odwoływałem się do tej metody:
Zamiast animacji klatki animujesz alfa:
źródło
Od iOS 5 ten jest o wiele łatwiejszy:
źródło
Swift 4 To jest po prostu niesamowite
źródło
Odpowiedź Vladimira jest idealna, ale każdy taki jak ja, który szuka szybkiego rozwiązania
To rozwiązanie działa w szybkiej wersji 4.2
Możesz wywołać tę metodę z dowolnego miejsca. Zmieni obraz na następny (obraz) z animacją.
Dla wersji Swift 4.0 Użyj poniższego rozwiązania
źródło