2

インターフェイスビルダーでは、NSStackView (垂直方向) にいくつかのビュー (A、B、C) があります。実行時に、プロパティ オブザーバー (willSet) を介してこれらの埋め込みビューの一部を表示または非表示 (isHidden) にすることで、NSStackView を動的に変更します。以下のコードが実際に機能する場合 (それに応じてビューが表示または非表示になります)、アニメーションでそれを行うことはできません。

  var isExpanded :Bool = false {
        willSet {
            NSAnimationContext.beginGrouping()
            NSAnimationContext.current.duration = 2.0
            if newValue {
                viewA.isHidden = true
                viewB.isHidden = false
                viewC.isHidden = true
                viewD.isHidden = true
                print("Popover expanded")
            } else {
                viewA.isHidden = false
                viewB.isHidden = false
                viewC.isHidden = false
                viewD.isHidden = false
                print("Popover contracted")
            }
            NSAnimationContext.endGrouping()
        }

私が理解しているように、 isHidden 状態はアニメーションでは処理されませんが、それを行う他の方法は見つかりません。または、(非表示/表示の代わりに) addView および removeFromSuperview メソッドも使用しようとしました。同じ結果...

私の問題は、主にiOS関連の問題(UIView.animate ...)を見つけ、MacOS(NSView)については何も見つけないことです...

何か案は ?

助けてくれてどうもありがとう、ジョー

4

1 に答える 1