gpt4 book ai didi

cocoa - NSScrollView 中的自动布局约束

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

我正在以编程方式在 NSScrollView 内创建 NSTableView,但是当我尝试将框架设置为 ScrollView 时,出现约束错误。

Unable to simultaneously satisfy constraints:
(
"<NSAutoresizingMaskLayoutConstraint:0x107d4ec50 h=--& v=--& V:[NSScrollView:0x10068c570(372.5)]>",
"<NSAutoresizingMaskLayoutConstraint:0x107d4d020 h=-&- v=-&- V:[NSClipView:0x10068d7f0]-(673)-| (Names: '|':NSScrollView:0x10068c570 )>",
"<NSAutoresizingMaskLayoutConstraint:0x107d4cfc0 h=-&- v=-&- V:|-(2)-[NSClipView:0x10068d7f0] (Names: '|':NSScrollView:0x10068c570 )>"
)

Will attempt to recover by breaking constraint
<NSAutoresizingMaskLayoutConstraint:0x107d4d020 h=-&- v=-&- V:[NSClipView:0x10068d7f0]-(673)-| (Names: '|':NSScrollView:0x10068c570 )>

Set the NSUserDefault NSConstraintBasedLayoutVisualizeMutuallyExclusiveConstraints to YES to have -[NSWindow visualizeConstraints:] automatically called when this happens. And/or, break on objc_exception_throw to catch this in the debugger.

看起来它们是自动创建的。

这是我的创建代码(使用 arc)我正在子类化 NSView

-(void)addColumnsToTable{
NSTableColumn *col = [[NSTableColumn alloc]initWithIdentifier:@"priority"];
[col.headerCell setStringValue:@"priority"];
[col setWidth:10];
[col setMinWidth:1];
[col setMaxWidth:10];
[self.tableView addTableColumn:col];

// col = [[NSTableColumn alloc]initWithIdentifier:@"name"];
// [self.tableView addTableColumn:col];
}


-(void)createTable{
NSTableView *tableView = [[NSTableView alloc]initWithFrame:NSZeroRect];

[tableView setDelegate:self];
[tableView setDataSource:self];

NSScrollView *scrollView = [[NSScrollView alloc]initWithFrame:self.bounds];
[scrollView setBorderType:NSGrooveBorder];

[self addSubview:scrollView];
[scrollView setDocumentView:tableView];
[scrollView setHasVerticalScroller:YES];
[scrollView setAutohidesScrollers:YES];


self.tableView = tableView;
self.scrollView = scrollView;

[self addColumnsToTable];

}

这是它的问题所在:

-(void)setFrame:(NSRect)frameRect{
[super setFrame:frameRect];
[self.scrollView setFrame:self.bounds];

}

有没有办法关闭这些自动约束?

最佳答案

明白了,问题是自动约束是根据 View 的自动调整大小掩码创建的。要停用此行为:

[scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];

其中scrollView是NSView的 subview

关于cocoa - NSScrollView 中的自动布局约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698380/

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