- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在玩 NSSplitView - 目前相当成功,但这是我的问题:
我的 SplitView 看起来像这样:
在这里测试项目:https://www.dropbox.com/s/amz863l11nvkdir/TestNSSplitView.zip
我已经实现了 - (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize
以在调整大小时将左右 subview 保持与之前相同的大小。
如果我打开包含 NSSplitView 的窗口,控制台中会出现此消息:
<NSSplitView: 0x107de1520>: the delegate <BRSchematicWindowController: 0x10ac11050> was sent -splitView:resizeSubviewsWithOldSize: and left the subview frames in an inconsistent state:
Split view bounds: {{0, 0}, {1068, 600}}
Subview frame: {{0, 0}, {182, 600}}
Subview frame: {{183, 0}, {640, 600}}
Subview frame: {{824, 0}, {243, 600}}
The outer edges of the subview frames are supposed to line up with the split view's bounds' edges. NSSplitView is working around the problem, perhaps at the cost of more redrawing. (This message is only logged once per NSSplitView.)
这里有什么问题?看完这条消息我还是没明白...
PS: 在右边的 splitView 中有另一个 NSSplitView 这不是失败。即使没有这个额外的 NSSplitView,我也会收到这条消息。
最佳答案
如果您的目标是 OS X 10.6+,那么使用 NSSplitView
的 splitView:shouldAdjustSizeOfSubview:
会容易得多控制大小。
使用此方法的一种方法是将以下 IBOutlet
添加到您的 .h 文件中:
@property (nonatomic, weak) IBOutlet NSView *leftView;
@property (nonatomic, weak) IBOutlet NSView *centerView;
@property (nonatomic, weak) IBOutlet NSView *rightView;
然后在您的 .m 文件中实现 splitView:shouldAdjustSizeOfSubview:
,如下所示:
- (BOOL)splitView:(NSSplitView *)aSplitView
shouldAdjustSizeOfSubview:(NSView *)subview {
return (subview == _centerView);
// or return !(subview == _leftView || subview == _rightView);
}
通过实现它,您基本上就是在说“调整大小时只调整中心 subview 的大小”。
除非您需要以某种方式自定义默认行为,否则您可以暂时注释掉整个 splitView:resizeSubviewsWithOldSize:
方法。
请注意,如果您有多个将此 Controller 对象设置为它们的委托(delegate)的 Split View,您可能需要检查在 aSplitView
参数中传递了哪个 Split View并执行不同的操作因此。
关于objective-c - NSSplitView 的不一致状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16267363/
很难用语言来表达这个问题,但一个现实世界的例子会有所帮助。如果您查看 iTunes 应用程序,它似乎有一个用于 Sidebar | 的 NSSplitView。内容拆分,以及用于源列表和图稿面板的嵌套
我有一个水平 NSSplitView,它位于另一个垂直 NSSplitView 的右 subview 的顶部。我有委托(delegate)方法来限制左 subview 调整大小。但对于位于顶部的水平
我有一个 NSSplitView,其中两个 NSView 中都有内容。左侧 NSView 有 2 个约束 - Equal Widths 和 Equal Heights。右边的 NSView 有一些简单
我正在使用 NSSplitView 为 macOS 构建一个应用程序。在 splitview 的顶部框架中,有另一个 NSSplitView,这次是垂直的,用于创建一个三 Pane 窗口。 (顶部两帧
我有一个 NSSplitViewDelegate,并且我限制了 SplitPosition。但是,在边缘情况下,如果我移动光标将分隔线拖离屏幕边缘,则分隔线本身会从 (0, 0) 开始。然而,即使提议
在我的应用程序中,我使用 NSSplitView,它能够使用 - (void)setVertical:(BOOL)flag 方法在垂直和水平布局之间切换。问题是,当用户更改布局时,拆分器总是将其位置恢
我想知道是否有一种方法可以以编程方式更改分离器的位置。 最佳答案 您可以使用 setPosition:ofDividerAtIndex: 更改分隔线的位置 关于cocoa - NSSplitView
仅使用 Xcode 提供的自动布局选项是否可以实现以下目的?例如,通过更改拥抱或压缩设置。 实现这种调整大小行为的推荐方法是什么? 最佳答案 如果你想实现固定的左面板,只需在Interface Bui
我有一个 NSSplitView,它有两个 Pane - 左侧是侧边栏表格 View ,右侧是 Web View 。我还有一个委托(delegate)集,用于处理侧边栏的约束,如下所示: - (CGF
我应该如何在NSSplitView内使用自动布局约束 subview ? 我的NSSplitView subview 有 3 个 subview :topPane , tableContainer和b
我有一个带有两个水平 subview 的 NSSplitView。左边是 NSOutlineView,右边是 NSTableView。左 View 对宽度有两个约束:1) >= 150 和 2) B
我正在尝试了解如何检测 NSSplitView 分隔线上的双击。在我看来,分频器既没有暴露给 NSSplitViewDelegate,也没有暴露给 NSSplitViewController。 到目前
我是 OS X cocoa 开发的新手,正在使用 Storyboards for Yosemite 开发 Swift 应用程序。 在我的应用程序的主窗口中,我有一个 NSSplitViewContro
嵌套NSSplitView实例会导致奇怪的行为。当拖动嵌套 splitView 的拆分器时,父 splitView 的拆分器可以移动以容纳更大的子级,作为拖动的副作用。 这是一个重现此问题的极简项目的
我有一个由自动布局支持的 NSSplitView View ,并且效果很好。但是,我需要能够在代码中设置初始分割位置(因为它将从首选项中恢复)。 我不太清楚如何实现这项工作。在 El Capitan
上下文 我的应用程序中有一个 NSSplitView,它有 3 个 Pane 。我对 NSSplitView 进行了子类化,它有一个覆盖: -(CGFloat) dividerThickness {
我正在尝试以编程方式在 NSSplitView 上添加 NSView (以覆盖它)。每次尝试执行此操作都会导致它作为额外的 subview 添加到 NSSplitview 中。有人可以帮忙吗? 代码:
任何人都可以禁用或防止将鼠标移动到 NSSplitView 的分隔线时更改鼠标光标吗? 我有一个 NSWindow ,里面有 splitView ,然后我尝试将 NSView/NSButton 添加到
我怀疑 NSSplitView 中的分隔符数量等于 [[MySplitViewObject subviews] count] -1 并且 NSSplitView 中任何给定分隔符的索引等于分隔线左侧或
我正在使用 NSSpliView 自动布局,设置如下图 分割 View 位于一个可以调整大小的窗口中,当它调整大小时,分隔线会按50:50的比例变化,如何更改它,以便底部 View 的高度保持不变,顶
我是一名优秀的程序员,十分优秀!