首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用动画隐藏NSStackView的视图项目

用动画隐藏NSStackView的视图项目
EN

Stack Overflow用户
提问于 2017-09-15 15:59:50
回答 2查看 2.6K关注 0票数 3

我正在使用macOS的swift 4,我想隐藏一个带有动画的堆栈视图项目。

我试过这个:

代码语言:javascript
复制
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)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46234608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档