2016-02-12 14 views
6

アレンジされたサブビューの内在的なコンテンツサイズが変更されたときにアニメーション表示できますか?アニメーションUIStackView arrangedSubviewコンテンツサイズの変更

たとえば、配置されたサブビューがあるとします.1つのUILabelをエッジに固定して保持しています。そのラベルには少量のテキストしかありません。新しいテキストが現れます。これは前のテキストよりも大きいです。ラベルの本質的なコンテンツサイズがより大きくなりました。

私はそうのようにそれをアニメーション化できるようにしたいと思います:

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

stackviewを現在アニメーションブロックを無視して、新しいものに古いコンテンツのサイズから「ジャンプ」。

もちろん、配置されたサブビューの高さを手動で調べ、その制約をアニメートすることもできます。私は可能ならばそれを避けたいと思います。

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

は動作しません:働く何かが見つかり

+0

スーパービューのレイアウトを調整しようとしましたか? – jervine10

答えて

3

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

奇妙な固有のコンテンツサイズの変更がstackViewはしかし、レイアウトを必要としたいことはありませんが...

+0

うわー!それはどのように機能するのですか? –

+0

私はこのようにアニメートすることができませんでした。 intrinsicContentSizeを変更すると何も起こりませんでしたが、理想的ではありませんが、レイアウト制約に置き換えられました。 –

関連する問題