我应该如何在NSSplitView子视图中使用自动布局约束?
我的NSSplitView子视图有3子视图:topPane,tableContainer和bottomPane我这样设置约束:
NSDictionary* views = NSDictionaryOfVariableBindings(topPane, tableContainer, bottomPane);
for (NSView* view in [views allValues]) {
[view setTranslatesAutoresizingMaskIntoConstraints:NO];
}
[myView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[topPane(34)][tableContainer][bottomPane(24)]|"
options:0
metrics:nil
views:views]];
[mySplitView addSubview:myView];
Run Code Online (Sandbox Code Playgroud)
在控制台中得到这个:
Unable to simultaneously satisfy constraints:
(
"<NSLayoutConstraint:0x7fd6c4b1f770 V:[NSScrollView:0x7fd6c4b234c0]-(0)-[CPane:0x7fd6c4b2fd10]>",
"<NSLayoutConstraint:0x7fd6c4b30910 V:[CPane:0x7fd6c4b2f870(34)]>",
"<NSLayoutConstraint:0x7fd6c4b30770 V:|-(0)-[CPane:0x7fd6c4b2f870] (Names: '|':NSView:0x7fd6c4b22e50 )>",
"<NSLayoutConstraint:0x7fd6c4b212f0 V:[CPane:0x7fd6c4b2fd10]-(0)-| (Names: '|':NSView:0x7fd6c4b22e50 )>",
"<NSLayoutConstraint:0x7fd6c4b2f910 V:[CPane:0x7fd6c4b2f870]-(0)-[NSScrollView:0x7fd6c4b234c0]>",
"<NSLayoutConstraint:0x7fd6c4b21290 V:[CPane:0x7fd6c4b2fd10(24)]>",
"<NSAutoresizingMaskLayoutConstraint:0x7fd6c3630430 h=--& v=--& V:[NSView:0x7fd6c4b22e50(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7fd6c4b1f770 V:[NSScrollView:0x7fd6c4b234c0]-(0)-[CPane:0x7fd6c4b2fd10]>
Run Code Online (Sandbox Code Playgroud)
我认为<NSAutoresizingMaskLayoutConstraint:0x7fd6c3630430 h=--& v=--& V:[NSView:0x7fd6c4b22e50(0)]> …
我想,以取代RBSplitView与NSSplitView我现有的项目.该应用程序现在只有豹子,我想用Leopard附带RBSplitView的新产品 替换NSSplitView.
不过,我错过RBSplitView的便利方法expand和collapse在NSSplitView.如何以编程方式展开和折叠部分NSSplitView?
我有一个带有三个子视图的NSSplitView(NO UISplitView(Controller)!!).现在,对于最后一个分隔符(索引1),我希望分隔符不显示拖动光标(两个箭头指向彼此之外).我有这个停止拖动,但光标仍然显示:
- (CGFloat)splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex {
if (dividerIndex == 1) {
return [splitView frame].size.width - 161;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我只想隐藏索引处分隔符的光标1.谁能帮我?谢谢.:)
不,我不想使用BWToolkit.
是否可以为NSSplitView子视图的折叠和扩展设置动画?(我知道替代类的可用性,但更喜欢使用NSSplitView而不是动画.)
我正在使用该方法- (void)setPosition:(CGFloat)position ofDividerAtIndex:(NSInteger)dividerIndex执行折叠和扩展.
我有一个NSSplitView,它有两个窗格 - 左边是侧边栏表视图,右边是一个Web视图.我还有一个委托集,它处理侧边栏的约束,如下所示:
- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)dividerIndex {
return 500.0f;
}
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex {
return 175.0f;
}
- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
这意味着侧边栏只能在175到500像素之间调整大小,这在使用分隔符句柄时工作正常.但是当调整整个窗口的大小时,分隔符会从这些约束中重新定位.
有谁知道如何控制这个?
另外:如果我想存储用户选择的侧边栏宽度,是否可以将其读出来,将其保存到首选项文件并稍后恢复,或者是否有更直接的方法来执行此操作?我注意到窗口的状态在某些情况下得到了保存 - 这通常会发生还是我必须控制它?
提前致谢
阿恩
启用自动布局后,通过在界面构建器中为NSSplitView设置自动保存名称自动保存分隔符位置会导致每个分隔符在应用程序重新启动时完全折叠.禁用自动布局允许自动保存工作完美.
我在一个新的Xcode项目中尝试了这个,同样的结果.这是一个错误,还是一个已知的不兼容问题?
我怎么能解决这个问题(如果它是一个bug,还是有解决方法)?
如何设置NSSplitView的起始位置?
我发现的最接近的事情就是setPosition
//Set splitView position.
[splitView setPosition:330 ofDividerAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
这似乎没有做任何事情,我的splitview仍然从中心的分隔符开始.
有任何想法吗?
我有一个应用程序,其布局类似于iTunes.主窗口是NSSplitView.
根据用户在左栏中选择的内容,我需要显示不同的视图.例如,在itunes中,如果单击"音乐",则会在表格中看到歌曲列表,如果单击"电视节目",我会看到一个带有一些文本的白色屏幕.
一直试图解决这个问题,任何正确方向的指针都会非常方便!
我有一个NSSplitView在左侧我有一个tableView(像源列表),根据行选择,我想改变拆分视图的右侧.我无法弄清楚如何做到这一点.
当我将我想要的子视图添加到splitview时,它会添加另一个分割(所以现在共有3个视图...不是我想要的).
[mySplitView addSubview:myCustomView];
Run Code Online (Sandbox Code Playgroud)
如何正确设置splitView的右侧?
更新
运用
[mySplitView replaceSubview:[[mySplitView subviews] objectAtIndex:1] withSubview:myCustomView]
Run Code Online (Sandbox Code Playgroud)
似乎工作,但它正在调整拆分视图,相当奇怪,我怎么能阻止这个?在IB中有一个关闭选项,autoResizesSubviews但我不能取消选中.有任何想法吗?
我正在尝试创建一个类似Reeder/Sparrow的UI来处理我的应用程序的内容.目前我在内部使用带有两个NSView的NSSplitView(左边的那个是内容列表,另一个是右边的"检查器").
我想知道的是如何在标题栏上创建分隔符,它也可以作为分割视图的分隔符.我已经在使用INAppStoreWindow子类了.
有任何想法吗?Thanx提前
nssplitview ×10
cocoa ×9
objective-c ×5
macos ×4
autolayout ×2
animation ×1
cursor ×1
expand ×1
nstableview ×1
nsview ×1
swift ×1