标签: nssplitview

如何切换NSSplitView子视图+隐藏Pane Splitter分隔符的可见性?

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

切换SideBar视图的最佳Cocoa友好方式是什么?

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

提示:我一直试图这样做,但我仍然有问题隐藏NSSplitView的分隔符.我怎么能这样做,同时隐藏它?

cocoa objective-c toggle nssplitview swift

7
推荐指数
2
解决办法
6708
查看次数

如何实现具有最小和最大尺寸的3窗格NSSplitView?

我想实现一个3窗格的垂直NSSplitView(非常类似于Mail.app).我不确定从哪里开始.我很确定我需要实现一个NSSplitViewDelegate,但我不确定哪些方法和/或它们的实现.

我想要的布局如下:

+----------+------------------+------------------------------------+
|          |                  |                                    |
|          |                  |                                    |
|          |                  |                                    |
|          |                  |                                    |
|  Pane 1  |      Pane 2      |               Pane 3               |
|          |                  |                                    |
|          |                  |                                    |
|          |                  |                                    |
|          |                  |                                    |
|          |                  |                                    |
+----------+------------------+------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我想为每个窗格实现以下约束:

  • 窗格1:最低140pt.最大值:400pt.
  • 窗格2:最低250pt.
  • 窗格3:最低400pt.

任何指针都将非常感激.

cocoa nssplitview

7
推荐指数
4
解决办法
4369
查看次数

INAppStoreWindow标题栏上的NSSplitView分隔符

我正在尝试创建一个类似Reeder/Sparrow的UI来处理我的应用程序的内容.目前我在内部使用带有两个NSView的NSSplitView(左边的那个是内容列表,另一个是右边的"检查器").

我想知道的是如何在标题栏上创建分隔符,它也可以作为分割视图的分隔符.我已经在使用INAppStoreWindow子类了.

有任何想法吗?Thanx提前

macos cocoa objective-c nssplitview inappstorewindow

7
推荐指数
1
解决办法
766
查看次数

NSSplitViewItem折叠动画和窗口setFrame冲突

我试图在移动其包含的窗口的同时制作一个(新的10.10)NSSplitViewItem崩溃和解体,以便将整个事物保持在"适当的位置".

问题是,我在动画中得到一个抽搐(如看到这里).

我正在进行折叠的代码是这样的:

func togglePanel(panelID: Int) {

     if let splitViewItem = self.splitViewItems[panelID] as? NSSplitViewItem {

          // Toggle the collapsed state
          NSAnimationContext.runAnimationGroup({ context in

               // special case for the left panel
               if panelID == 0 {
                    var windowFrame = self.view.window.frame
                    let panelWidth = splitViewItem.viewController.view.frame.width
                    if splitViewItem.collapsed {
                         windowFrame.origin.x -= panelWidth
                         windowFrame.size.width += panelWidth
                    } else {
                         windowFrame.origin.x += panelWidth
                         windowFrame.size.width -= panelWidth
                    }
                    self.view.window.animator().setFrame(windowFrame, display: true)
               }
               splitViewItem.animator().collapsed = !splitViewItem.collapsed
          }, completionHandler: nil)
     }
}
Run Code Online (Sandbox Code Playgroud)

我知道"不要跨越流"问题(来自会话213,WWDC'13),其中在主线程上运行的窗口大小调整动画和在单独线程上运行的核心动画崩溃动画相互干扰.将splitViewItem折叠动画放到主线程上似乎是错误的方法,我有一种唠叨的感觉,有一个更好的方法来做到这一点,我错过了.

由于我没有在任何地方找到NSSplitViewItems的任何文档(还),我将不胜感激.

我已经在GitHub上的小测试项目在这里 …

multithreading core-animation nssplitview swift

7
推荐指数
1
解决办法
1672
查看次数

以编程方式调整NSSplitView的大小

我曾经使用并喜欢RBSplitView,但是由于某个版本的xcode不再支持IB插件,我无法以编程方式重新实现它.

因此我回到使用NSSplitView.NSSplitView适合我需要的东西,就是NSSplitView的autoSave被打破了.所以我决定自己实施它.

我目前正在做的事情是调整NSSplitView的1个子视图的大小.

调整NSSplitView大小的正确方法是什么? - setPositionOfDivider:itIndex:应该是要走的路(没试过),但是我不知道如何获得分频器的当前位置.

- 提前致谢

xcode cocoa objective-c appkit nssplitview

6
推荐指数
1
解决办法
2258
查看次数

NSSplitView只使用自动布局在窗口调整大小上展开一个面板?

是否可以使用Xcode提供的自动布局选项实现以下目的?例如,通过更改拥抱或压缩设置.

使用自动布局仅扩展NSSplitView的一个面板

实现此调整大小行为的推荐方法是什么?

macos xcode cocoa nssplitview

6
推荐指数
1
解决办法
6814
查看次数

使用Xcode 6的OSX 10.10中的NSSplitViewController

根据NSSplitViewControllers上的文档,关联的NSSplitView使用NSSplitViewController作为其委托.特别是在文档中,"拆分视图控制器充当其拆分视图对象(管理分隔符的对象)的委托.如果覆盖拆分视图委托方法,则覆盖必须调用super."

我在界面构建器中实现了一个NSSplitViewController并给它一个类.但是,没有调用任何splitView委托.另外,如果我只是像spit那样执行splitView委托[NSLog(@"%@",self.splitView.delegate); ],结果为"null".但是,如果我在IB本身(通过将委托出口拖动到NSSplitViewController)或内部代码([self.splitView setDelegate:self];)中分配委托,我会收到以下错误:

引发了未捕获的异常
SplitViewController的splitView无法使用autolayout,因为SplitViewController会覆盖不兼容的委托方法.

我完全陷入了困境.

xcode objective-c nssplitview

6
推荐指数
1
解决办法
2256
查看次数

NSSplitView启动大小(故事板和Swift)的麻烦

我刚刚使用Swift,Storyboards和Document创建了一个简单的Cocoa应用程序.

我所做的唯一改变是用Split View Controller替换Main.storyboard中的默认View Controller.除了一件事之外,所有内容都可以很好地填充子视图:当我启动应用程序时,分隔符始终位于窗口的最左侧.这是垂直拆分视图.(如果我改为水平,则分隔符从最顶部开始.)

我尝试过添加约束,但IB甚至不允许我向子视图中的内容添加约束.

我也尝试过使用splitView.setPosition ofDividerAtIndex但没有成功.

如何指定左侧子视图的宽度或分隔符的位置?

macos cocoa nssplitview swift

6
推荐指数
1
解决办法
2597
查看次数

设置NSSplitViews的最小宽度

我有一段时间设置一个简单的拆分视图.第一个拆分视图已折叠.我需要为它设置最小宽度.我在网上看到的所有内容(NSSplitViewController/NSSplitView都很少)都是针对Objective-C的,将所有内容放在app委托中,并使用XIB.

这是一个场景:具有segView到SplitView控制器的窗口控制器,它有两个拆分视图(2个视图控制器).

哪个对象需要NSSplitViewDelegate?

编辑:添加代码片段: 例如,我有这个:

import Cocoa

class ViewController: NSSplitViewController, NSSplitViewDelegate {


    @IBOutlet weak var pdlSplitView: NSSplitView!

    override func viewDidLoad() {
        super.viewDidLoad()

        }
    override func splitView(splitView: NSSplitView, constrainMinCoordinate proposedMinimumPosition: CGFloat, ofSubviewAt dividerIndex: Int) -> CGFloat {
        return proposedMinimumPosition + 200
    }

}
Run Code Online (Sandbox Code Playgroud)

还有更多我想念的吗?

谢谢

UPDATE

根据下面的评论,我做了一个更改,但现在我在AppDelegate的类定义上获得了一个sigAbort.完整代码

视图控制器:

import Cocoa

class ViewController: NSSplitViewController, NSSplitViewDelegate {


    @IBOutlet weak var pdlSplitView: NSSplitView!

    let publicDataListings : PDL = PDL()


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view. …
Run Code Online (Sandbox Code Playgroud)

macos xcode nssplitview swift

6
推荐指数
2
解决办法
6581
查看次数

使用Storyboard在应用程序中没有宽度的初始窗口

我试图在XCode中理解Storyboard.我从模板创建了一个新的Mac OS X应用程序并定义了一个简单的Storyboard,如下图所示:

在此输入图像描述

问题是当我运行应用程序时,我的窗口看起来像这样:

在此输入图像描述

我必须调整它以查看垂直分割视图的右和左部分.我已经定义了高度和我的窗口,所以我不知道为什么会发生这种情况我真的不知道为什么这个窗口正确显示下面的视图控制器而不是拆分视图控制器.

在此输入图像描述

在此输入图像描述

我在拆分视图控制器上做错了什么?

macos xcode window storyboard nssplitview

6
推荐指数
1
解决办法
507
查看次数