2016-02-12 8 views
6

Czy jest możliwe animowanie uporządkowanego widoku podrzędnego, gdy zmienia się jego nieodłączny rozmiar?Animacja UIStackView uporządkowana zmiana rozmiaru treści Subview

Na przykład wyobraź sobie, że mam uporządkowany wyskok, który zawiera pojedynczy UILabel przypięty do krawędzi. Ta etykieta zawiera niewielką ilość tekstu. Pojawia się nowy tekst, który jest większy niż poprzedni tekst. Wewnętrzny rozmiar zawartości etykiety jest teraz większy.

Chciałbym móc animowanie go tak:

stackView.layoutIfNeeded() 
self.label.text = self.expanded ? textTwo : textOne 
UIView.animateWithDuration(0.3) {() -> Void in 
    self.stackView.layoutIfNeeded() 
} 

stackview obecnie „skacze” od starego rozmiaru zawartości do nowego, ignorując bloku animacji.

Alternatywą jest oczywiście ręczne ustalenie wysokości uporządkowanego widoku podrzędnego i animacja tego wiązania. Chciałbym tego uniknąć, jeśli to możliwe.

+0

Czy próbowałeś dopasować układ superwizji? – jervine10

Odpowiedz

3

znaleziono coś, co działa:

label.text = expanded ? textOne : textTwo 
UIView.animateWithDuration(0.4) {() -> Void in 
    self.stackView.setNeedsLayout() 
    self.stackView.layoutIfNeeded() 
} 

Nie działa:

label.text = expanded ? textOne : textTwo 
UIView.animateWithDuration(0.4) {() -> Void in 
    self.stackView.layoutIfNeeded() 
} 

Dziwne, że zmiana w wielkości rzeczywistej zawartości nie czyni stackView chcą choć trzeba układ ...

+0

Wow! Jak to działa?! –

+0

Nie mogłem uzyskać nic do animacji w ten sposób. Zmiana właściwości continsicContentSize nie spowodowała niczego, ale zastąpiła ją ograniczeniami układu, ale nie była idealna. –