标签: nssplitview

NSSplitView和autolayout

我应该如何在NSSplitView子视图中使用自动布局约束?

我的NSSplitView子视图有3子视图:topPane,tableContainerbottomPane我这样设置约束:

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)]> …

cocoa nssplitview autoresizingmask autolayout

22
推荐指数
2
解决办法
1万
查看次数

如何以编程方式展开和折叠部分NSSplitView?

我想,以取代RBSplitViewNSSplitView我现有的项目.该应用程序现在只有豹子,我想用Leopard附带RBSplitView新产品 替换NSSplitView.

不过,我错过RBSplitView的便利方法expandcollapseNSSplitView.如何以编程方式展开和折叠部分NSSplitView?

cocoa expand nssplitview

17
推荐指数
4
解决办法
1万
查看次数

使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.

cocoa objective-c cursor nssplitview

16
推荐指数
2
解决办法
5267
查看次数

如何使用动画展开和折叠NSSplitView子视图?

是否可以为NSSplitView子视图的折叠和扩展设置动画?(我知道替代类的可用性,但更喜欢使用NSSplitView而不是动画.)

我正在使用该方法- (void)setPosition:(CGFloat)position ofDividerAtIndex:(NSInteger)dividerIndex执行折叠和扩展.

macos cocoa animation nssplitview

14
推荐指数
2
解决办法
8249
查看次数

NSSplitView:在窗口调整大小期间控制分隔符位置

我有一个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像素之间调整大小,这在使用分隔符句柄时工作正常.但是当调整整个窗口的大小时,分隔符会从这些约束中重新定位.

有谁知道如何控制这个?

另外:如果我想存储用户选择的侧边栏宽度,是否可以将其读出来,将其保存到首选项文件并稍后恢复,或者是否有更直接的方法来执行此操作?我注意到窗口的状态在某些情况下得到了保存 - 这通常会发生还是我必须控制它?

提前致谢

阿恩

cocoa nssplitview

13
推荐指数
2
解决办法
5855
查看次数

NSSplitVIew - 自动保存分隔符位置不适用于启用自动布局

启用自动布局后,通过在界面构建器中为NSSplitView设置自动保存名称自动保存分隔符位置会导致每个分隔符在应用程序重新启动时完全折叠.禁用自动布局允许自动保存工作完美.

我在一个新的Xcode项目中尝试了这个,同样的结果.这是一个错误,还是一个已知的不兼容问题?

我怎么能解决这个问题(如果它是一个bug,还是有解决方法)?

macos cocoa objective-c nssplitview autolayout

13
推荐指数
4
解决办法
2916
查看次数

NSSplitView分隔符的起始位置

如何设置NSSplitView的起始位置?

我发现的最接近的事情就是setPosition

//Set splitView position.
[splitView setPosition:330 ofDividerAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

这似乎没有做任何事情,我的splitview仍然从中心的分隔符开始.

有任何想法吗?

macos objective-c nsview nssplitview swift

12
推荐指数
2
解决办法
4758
查看次数

动态更改NSSplitView中视图的内容?

我有一个应用程序,其布局类似于iTunes.主窗口是NSSplitView.

根据用户在左栏中选择的内容,我需要显示不同的视图.例如,在itunes中,如果单击"音乐",则会在表格中看到歌曲列表,如果单击"电视节目",我会看到一个带有一些文本的白色屏幕.

一直试图解决这个问题,任何正确方向的指针都会非常方便!

cocoa objective-c nssplitview

9
推荐指数
1
解决办法
1946
查看次数

以编程方式设置NSSplitView的一侧

我有一个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但我不能取消选中.有任何想法吗?

cocoa nstableview nssplitview

8
推荐指数
1
解决办法
2841
查看次数

INAppStoreWindow标题栏上的NSSplitView分隔符

我正在尝试创建一个类似Reeder/Sparrow的UI来处理我的应用程序的内容.目前我在内部使用带有两个NSView的NSSplitView(左边的那个是内容列表,另一个是右边的"检查器").

我想知道的是如何在标题栏上创建分隔符,它也可以作为分割视图的分隔符.我已经在使用INAppStoreWindow子类了.

有任何想法吗?Thanx提前

macos cocoa objective-c nssplitview inappstorewindow

7
推荐指数
1
解决办法
766
查看次数