首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何切换NSSplitView subView +隐藏窗格拆分器的可见性?

如何切换NSSplitView subView +隐藏窗格拆分器的可见性?
EN

Stack Overflow用户
提问于 2012-03-23 10:33:41
回答 6查看 8.8K关注 0票数 8

我们有一个父Split视图(NSSplitView)和两个子视图ContentSideBar (侧边栏在右边)。

切换SideBar视图的最佳可可友好型方法是什么?

  • 如果建议的解决方案包括动画,我会非常喜欢的。
  • 我真的不需要任何与外部插件等相关的建议(例如BWToolkit)

提示:我一直在尝试这样做,但我仍然有问题隐藏NSSplitView的分隔符。我怎么能做到这一点,同时又把它藏起来?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-23 18:22:17

这里有一个相当不错的教程,展示了如何做到这一点:解开NSSplitView之谜

隐藏分隔符是在NSSplitView的委托方法splitView:shouldHideDividerAtIndex:中完成的。

如果你不喜欢NSSplitView的方式,你将不得不动画化帧大小,改变你自己。

票数 8
EN

Stack Overflow用户

发布于 2019-07-19 05:52:55

最简单的方法是如下所示-而且它是动画的:SWIFT 5

代码语言:javascript
复制
    splitViewItems[1].animator().isCollapsed = true // Show side pane
    splitViewItems[1].animator().isCollapsed = false // hide side pane
票数 6
EN

Stack Overflow用户

发布于 2015-01-21 20:53:25

我从@Nathan的答案中写了一个Swift版本的链接中的内容,对我有用。在我的示例中,splitView设置在其他地方,可能是包含类上的实例属性:

代码语言:javascript
复制
func toggleSidebar () {
    if splitView.isSubviewCollapsed(splitView.subviews[1] as NSView) {
        openSidebar()
    } else {
        closeSidebar()
    }
}

func closeSidebar () {
    let mainView = splitView.subviews[0] as NSView
    let sidepanel = splitView.subviews[1] as NSView
    sidepanel.hidden = true
    let viewFrame = splitView.frame
    mainView.frame.size = NSMakeSize(viewFrame.size.width, viewFrame.size.height)
    splitView.display()
}

func openSidebar () {
    let sidepanel = splitView.subviews[1] as NSView
    sidepanel.hidden = false
    let viewFrame = splitView.frame
    sidepanel.frame.size = NSMakeSize(viewFrame.size.width, 200)
    splitView.display()
}

这些函数可能会出现在类中,它们是给我的。如果您的splitView可以是nil,那么显然您必须检查它。这还假设您有两个子视图,一个在索引1处,因为sidePanel是您想要折叠的。

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

https://stackoverflow.com/questions/9837690

复制
相关文章

相似问题

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