2016-10-17 4 views
3

スタックビューのすべてのサブビューをアニメーション表示しようとすると、左上に移動することがわかります。表示すると、それらは左上から適切な空間にアニメーション化されます。 配置されたビューのサブセットのみを非表示にすると、それらは期待どおりにアニメートされます。UIStackViewは、すべてのサブビューがアニメーションブロック内に隠されている場合、サブビューを左上に配置します。

私の現在の回避策は、目に見えないサブビューをスタックに保持することですが、これは非常にうまいです。

私は、私は非常に同様の問題に直面し、バックの数時間後と述べ、私はself.view.layoutIfNeeded()を呼び出すと、問題を修正することを見つけ

UIView.animate(withDuration: 0.5) {     
    self.someStack.arrangedSubviews.forEach { $0.isHidden = !$0.isHidden 
} 
+0

こんにちは、私は同じ問題を抱えています、あなたはそれを解決する方法を見つけましたか?ありがとう –

+0

完全に満足できるものはありません。私は高さが0に制限されたUIVIewを持っていることに気づいた。私は必要に応じて他のすべてのビューを隠して設定し、うまく機能します。 –

+0

ありがとう!私は同じことをすることを考えていた。それは唯一の方法です –

答えて

0

を経由して隠れています。

マイ階層:キーボードは(2)UIStackViewUITextField.becomeFirstResponder()への呼び出しに基づいて表示されたときに

- UIView - UIStackView - UIStackView(1) - UIButton - UIButton - UIStackView(2) - UITextField - UIButton - UIActivityIndicatorView

ルートUIViewが下からをアニメーション化します。デフォルトでは、(2)UIStackViewのすべてのサブビューは非表示になっています。 UISegmentedControlの変更に基づいて、アプリはUITextField.becomeFirstResponder()を呼び出し、(1)UIStackViewを非表示にして(2)UIStackViewと表示します。 stackView.subviews.forEach { $0.isHidden = false }の後にと呼んでいないと、(2)UIStackViewのサブビューが表示されますが、デバイスのの左上からアニメーションが表示されます。

これが役立つかどうかわかりませんが、調査の出発点になる可能性があります。

0

スタックビューに空のビュー(幅/高さ0)を追加してみてください。これは私の問題を解決しました。

関連する問題