gpt4 book ai didi

macos - 使用自动布局的 NSClipView/NSScrollView 内的 NSTableView 框架

转载 作者:行者123 更新时间:2023-12-03 16:11:58 33 4
gpt4 key购买 nike

我正在尝试使用自动布局在代码中的 NSScrollView (即标准配置)内创建一个 NSTableView 。我不知道如何实现这一点。

这是我的负载 View :

- (void)loadView
{
NSView *view = [[NSView alloc] init];

NSScrollView *tableScroll = [[NSScrollView alloc] init];
NSTableView *fileTable = [[NSTableView alloc] init];
[tableScroll setDocumentView:fileTable];
[tableScroll setHasVerticalScroller:YES];
[tableScroll setHasHorizontalScroller:NO];
fileTable.delegate = self;
fileTable.dataSource = self;
[fileTable setHeaderView:nil];
[fileTable setAllowsColumnReordering:NO];

NSTableColumn *column = [[NSTableColumn alloc] initWithIdentifier:@"column1"];
[fileTable addTableColumn:column];

[tableScroll setTranslatesAutoresizingMaskIntoConstraints:NO];
[fileTable setTranslatesAutoresizingMaskIntoConstraints:NO];

[view addSubview:tableScroll];

NSDictionary *topViews = NSDictionaryOfVariableBindings(tableScroll);
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[tableScroll]|" options:0 metrics:nil views:topViews]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[tableScroll]|" options:0 metrics:nil views:topViews]];

self.fileTable = fileTable;

self.view = view;
}

发生的情况是我的表格 View 的框架将始终等于NSClipView的边界。 View 位于窗口内并随之调整大小,当我这样做时,它将调整 ScrollView 、剪辑 View 和表格的大小,但我永远无法滚动到任何地方。

看看我得到的约束,NSScrollView 获取设置剪辑 View 来填充它的约束,剪辑 View 根本没有约束, TableView 有一堆与 NSTableRowViews 里面。

如果我向剪辑 View 添加像 |[fileTable(>=500)] 这样的约束,我将获得 500 像素的 NSTableView,但显然我不想这样做。

最佳答案

尽管发帖者在上面的评论中回答了这个问题,但我想我应该把答案放在这里(遇到了同样的问题)。如果您采用自动布局,通常会取消选中 xib 中的“Translates Mask Into Constraints”。但是,对于像 NSScrollViewNSTableView 这样的类,您通常应该通过将其 translatesAutoresizingMaskIntoConstraints 属性设置为 YES 来让它们管理自己的内部 View 。仍然可以设置这些 View 的外部约束,即根据其父 View 调整大小。

如果将 translatesAutoresizingMaskIntoConstraints 设置为 NO,那么您将需要为所有内部 View 提供约束,除非您特别需要自定义行为(几乎从不),你不会想做的。这就是上面的具体问题。

不正确设置此选项的一个明显副作用是,表格(例如)将无法正确滚动到 View 中可见的范围之外。

关于macos - 使用自动布局的 NSClipView/NSScrollView 内的 NSTableView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368340/

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