我试图将子视图添加到我的NSSplitView中,以便我的垂直拆分视图从
---------
view A (height = 100)
---------
Run Code Online (Sandbox Code Playgroud)
至
----------
view A (height = 50)
----------
view B (height = 50)
----------
Run Code Online (Sandbox Code Playgroud)
我以为这很简单,但是在将新的子视图添加到拆分视图之后,两个视图的高度都没有改变。
这是将视图B添加为子视图的工作:
splitView?.addSubview(NSView(frame: NSRect(x: 0, y: 0, width: 150, height: 100)))
splitView?.adjustSubviews()
Run Code Online (Sandbox Code Playgroud)
这将导致splitViewDidResizeSubviews被调用,但是两个视图的高度都保持为100,并且彼此重叠,没有显示分隔线。
我上传了一个显示该问题的示例项目:https : //duke.box.com/s/f50y2pjjbf3ib0y60c7yr5h3p3nicok7
谢谢你的帮助
我正在用这个IBActions加载两个不同的视图
- (IBAction)showFirstView:(id)sender{
theDetailViewController = [DetailViewController new];
[theDetailViewController initWithNibName:@"DetailView" bundle:nil];
NSView *splitRightView = [[theSplitView subviews] objectAtIndex:1];
NSView *aDetailView = [theDetailViewController view];
[aDetailView setFrame:[splitRightView bounds]];
[aDetailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[splitRightView addSubview:aDetailView];
NSLog(@"%@",(NSString *)splitRightView);
}
- (IBAction)showSecondView:(id)sender{
theNewViewController = [NewViewController new];
[theNewViewController initWithNibName:@"NewView" bundle:nil];
NSView *splitRightView = [[theSplitView subviews] objectAtIndex:1];
NSView *aDetailView = [theNewViewController view];
[aDetailView setFrame:[splitRightView bounds]];
[aDetailView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[splitRightView addSubview:aDetailView];
NSLog(@"%@",(NSString *)splitRightView);
}
但是使用这段代码我只是将堆栈中的子视图放在彼此前面如何在添加新子视图之前从splitRightView中删除子视图?
谢谢.
我正在开发可可应用程序。它包含一个带有一些功能按钮的工具栏。就像里德一样。
我想在调整拆分视图大小的同时调整工具栏部分的大小。像下面这样工作。如何实现这种功能?
任何人都可以帮助我或提供一些建议将不胜感激。
我正在使用 XCode7、Swift 和 Storyboard 进行开发。
我想在 NSSplitView 中指定左窗格的默认宽度(即在代码中,因为 XCode 中似乎没有办法输入默认大小)。这是我为了实现这一目标而设法拼凑在一起的代码,但它看起来非常冗长。我是 Objective-C 的新手,所以也许有更好的方法,但我似乎无法仅在子视图(*窗格)上输入 .width 。我错过了什么吗?
NSView *pane = [[_split subviews] objectAtIndex:0];
NSRect rect = [pane frame];
rect.size.width = 200;
[pane setFrame:rect];
Run Code Online (Sandbox Code Playgroud)
附言。我知道如何执行约束[最小/最大]坐标,我想要做的是指定运行应用程序时的大小;目前它占据了窗口的 50%,我不希望这样。
谢谢
nssplitview ×4
cocoa ×3
autolayout ×2
macos ×1
nstoolbar ×1
objective-c ×1
subview ×1
swift ×1
xcode ×1