我正在使用macOS的swift 4,我想隐藏一个带有动画的堆栈视图项目。
我试过这个:
class ViewController: NSViewController {
@IBOutlet weak var box: NSBox!
@IBOutlet weak var stack: NSStackView!
var x = 0
@IBAction func action(_ sender: Any) {
if x == 0 {
NSAnimationContext.runAnimationGroup({context in
context.duration = 0.25
context.allowsImplicitAnimation = true
self.stack.arrangedSubviews.last!.isHidden = true
self.view.layoutSubtreeIfNeeded()
x = 1
}, completionHandler: nil)
} else {
NSAnimationContext.runAnimationGroup({context in
context.duration = 0.25
context.allowsImplicitAnimation = true
self.stack.arrangedSubviews.last!.isHidden = false
self.view.layoutSubtreeIfNeeded()
x = 0
}, completionHandler: nil)
}
}
}
结果将是:
它起作用了!但我对动画风格并不满意。我的愿望是:
例如侧边栏,或者如果您有一个splitview控制器,并且您将执行splitviewItem.animator().isCollapsed = true
这个显示/隐藏的动画非常完美。这个愿望可能吗?
更新 self.stack.arrangedSubviews.last!.animator().frame = NSZeroRect
更新2
self.stack.arrangedSubviews.last!.animator().frame = NSRect(x: self.stack.arrangedSubviews.last!.frame.origin.x, y: self.stack.arrangedSubviews.last!.frame.origin.y, width: 0, height: self.stack.arrangedSubviews.last!.frame.size.height)
https://stackoverflow.com/questions/46234608
复制相似问题