在界面生成器中,我在 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)...
有任何想法吗 ?
非常感谢你的帮助,乔