gpt4 book ai didi

cocoa - NSTableHeaderView 防止自动布局在分割 View 中调整 ScrollView 的大小

转载 作者:行者123 更新时间:2023-12-03 16:20:31 24 4
gpt4 key购买 nike

问题:为什么标题 View 会阻止自动布局调整 ScrollView 的大小?

我试图将自定义 View 嵌入到 ScrollView 中,而 ScrollView 又包含在分割 View 中。我在 Xcode 4.5 DP 4 中使用 Interface Builder 创建了以下 View 层次结构,但同样的问题似乎也在 Xcode 4.4 中发生。

NSWindow
NSView (content view of the window)
NSSplitView
NSView (split view panel)
NSView (split view panel)
NSScrollView
TestView (my custom view)

现在,如果 TestView 提供 NSTableHeaderView (通过 -headerView)属性,则分割 View 分隔线无法一直拖动到底部(或右侧)以隐藏 TestView,但会停止到 TestView 初始宽度或高度的边界。如果 -headerView 属性返回 nil,则分隔线可以自由拖动。

每次都可以重现这一点,只需创建一个新的 Cocoa 应用程序项目、添加 View 并运行该项目即可。步骤:

  1. 创建一个新的 Cocoa 应用程序项目
  2. 使用 headerView 属性创建 TestView 类,该类返回 NSTableHeaderView 实例。
  3. 编辑 MainMenu.xib 并添加 Split View
  4. 添加自定义 View 并将其设为 TestView
  5. 选择编辑器 -> 嵌入 -> ScrollView
  6. 运行项目

(没有任何约束或触及其他 Interface Builder 菜单)

TestView.m:

@implementation TestView {
NSTableHeaderView *_header;
}

- (NSTableHeaderView *)headerView
{
if (!_header) {
_header = [[NSTableHeaderView alloc]
initWithFrame:NSMakeRect(0.0, 0.0, 100.0, 17.0)];
}

return _header;
}

@end

有什么指示吗,我应该怎么做才能让分割 View 分隔线再次移动?

最佳答案

在一个方便的类中实现此 NSSplitViewProtocol 方法:

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview {return TRUE;}

确保将 Split View的委托(delegate)输出连接到类对象。

分割 View 现在可以调整为任意大小。

关于cocoa - NSTableHeaderView 防止自动布局在分割 View 中调整 ScrollView 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11737981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com