问题标签 [nsstackview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2645 浏览

macos - 使用 Cocoa 自动布局隐藏和显示视图

我试图根据是否使用自动布局单击按钮来隐藏和显示下图中的视图#1。有人知道怎么做吗?

我尝试为视图 #2 设置两个 NSLayoutConstraints,一个绑定到视图 #1 和视图 #2 的超级视图顶部,一个绑定到视图 #1 的底部,然后更改NSLayoutConstraints 隐藏视图#1,但这似乎没有做任何事情。

任何意见,将不胜感激。我主要是在 IB 中尝试这样做,但也欢迎编程解决方案。

图片供参考:

查看测试

0 投票
2 回答
724 浏览

cocoa - 当堆栈视图调整大小时,如何让 NSButton 与 NSStackView 分离?

当堆栈视图调整大小时, 如何NSButton从一个分离?NSStackView

NSControl使用NSCell绘图的子类似乎与其他NSView子类在自动布局中具有抗压缩性的可见性有不同的想法。 NSStackView在这里似乎也没有什么不同。

如果我将控件的可见性优先级设置为高于 1,它不会下降。如果我将它设置为 0,那么它当然只会下降,永远不会出现。

这应该如何工作?
当堆栈视图的大小调整为更小时,如何让按钮或其他控件放下?
也许这是文档和示例的缺乏NSStackView......

0 投票
1 回答
475 浏览

macos - 如何制作基于模块化 NSViewController 的公开视图,其中所有公开的视图都包含在它们自己的 NIB 中?

实际应用程序中,视图层次结构可能很复杂,因此能够将不同的视图放在不同的 nib 中确实很有帮助。我正在关注InfoBarStackView 示例项目,他们提供了一个非常好的示例,说明如何使用托管不同视图的新 NSStackView 类。他们制作了一个DisclosureViewController负责托管内容视图的内容,更改其大小,以便可以从打开状态变为关闭状态。

这是一个简化的例子。我们有两个独立的笔尖:

  1. DisclosureViewController 披露视图控制器
  2. ContentViewController 内容视图控制器

在公开视图的占位符视图中加载内容视图的最简单方法是什么?是否可以仅在 IB 中执行此操作?

目前我的 AppDelegate 有很多冗余,因为它需要保存对两个视图控制器的引用。我想知道是否有办法简化这种情况?对于这个简单的示例,AppDelegate 将使用如下代码从两个不同的 nib 加载,

0 投票
1 回答
216 浏览

ios - 为什么用 ios7 我的 stackViewController 放这条白线?

在此处输入图像描述

为什么左下角有这个空白?它不在 ios6 编译版本上,我不明白如何删除它。我的 nib 文件没有(如您所见,顶层视图很大(从图像左侧 20 像素)并且控制器端没有任何视图尺寸的痕迹。

编辑:我已经尝试将 C_X 解决方案放在代码上:

但它不起作用。有任何想法吗?

编辑:问题已解决:我正在使用一个名为 PSStackedView ( https://github.com/steipete/PSStackedView/ ) 的插件,要在 iOS7 上正确使用它,您必须 使用边界而不是应用程序更改viewRect :

}

0 投票
1 回答
6111 浏览

cocoa - NSStackView 和具有内在内容大小的子视图

我有一个以编程方式创建的 NSStackView,我向其中添加了一个 NSButton。

我希望这已经足够了,因为按钮具有固有的内容大小(我检查了它是否返回了适当的值)。

检查视图层次结构我可以看到按钮框架是 origin=(x=0, y=0) size=(width=40, height=50),它的超级视图(NSStackViewContainer 的一个实例)是 origin=(x=0 , y=0) size=(width=0, height=0) 并且 NSStackView 是 origin=(x=0, y=0) size=(width=400, height=50)。

如您所见, NSStackViewContainer 的宽度和高度为 0...

如果我向按钮添加宽度和高度约束,一切正常。为什么按钮 intrinsicContentSize 不够?

0 投票
1 回答
1387 浏览

objective-c - NSStackView 只显示最新的自定义视图

我有一个自定义视图控制器类。我想实例化多个自定义视图控制器并将它们的视图添加到我的 NSStackView。我通过单击按钮将新视图添加到堆栈视图。按钮调用此方法:

但是,当添加一个新视图时,它会添加stackView.spacing到前一个视图所在的下方,但该前一个视图不再可见,但是它仍然在我的底部重力中列为一个视图,正如我调用时所证明的那样

如果我尝试添加 s,我没有这个问题NSButton,所以这与我的自定义视图有关,但我不知道是什么。

请帮忙。谢谢!

0 投票
1 回答
2735 浏览

objective-c - NSStackView 没有正确布局视图

我刚刚开始尝试NSStackView,我遇到了一个非常有趣的问题,我无法解决。我已经搜索了 Apple 网站上的自动布局指南以及NSStackView文档,但似乎找不到任何东西。

我的问题是我有两个从 nib 文件加载的相同NSScrollView对象(每个都带有嵌入的)。NSTextView当我将这些视图添加到我的堆栈视图时,第一个添加的视图会占用 100% 的可用空间,第二个会完全折叠到底部,高度为 2 个像素,同时占用所有可用的水平空间。实际上,这看起来像第一个视图是窗口中唯一的一个。这是它目前的样子:

有问题的窗口的屏幕截图

由于背景颜色,在此示例中几乎不可能看到,但滚动视图在窗口底部上方几个像素处结束。这是来自视图层次结构检查器的更好视图,我选择了这个 2 像素高的视图(单击此处查看大图):

Xcode 视图层次结构检查器

这是相关的设置代码:

据我了解,内在内容大小应该禁止视图缩小这么小。我不太熟悉NSStackView,所以任何帮助将不胜感激。

0 投票
1 回答
1882 浏览

cocoa - NSStackView places NSViews on the baseline

Having reviewed most of Apple's (paucity) of documentation regarding NSStackView, plus the wise words of the greater Internet, including the collective wisdom of Stackoverflow, a problem remains.

Any NSView I add programmatically to my (IB instantiated) NSStackView, visually locate themselves to the bottom of their respective gravity area. Hence they overlay each other and don't behave like an expected "stack" of views with appropriate spacing.

Each of the gravity areas seem somehow compressed and unable to accommodate any more views. The more I apply NSStackView.addView to a gravity area the slimmer the existing views become.

I would expect NSStackView to naturally expand to accommodate the .size of the embedded views.

Any wise counsel is most appreciated ...

---more details—</p>

I place the StackView into the main window using interface builder. I can then add other views into areas of the stack in interface builder, such as buttons. These stack and layout as expected in IB and when running.

However, when I add or insert any view programmatically to any gravity area their bottom edge is positioned vertically down to the bottom edge of the StackView. This layout behaviour is the same for a vertical or horizontal stack.

Consequently, if I add more than one view programmatically they are sized OK and display but overlap. I am using 'NSBox' objects as views (for now) and they are sized using '.sizeToFit()'. I can see that their '.bounds.height' and 'width' are non zero.

I'm not sure how to set or log the intrinsic content size. That might be the next thing to try.

—no luck—

So, I have now worked rigorously through all permutations of: compression, hugging, (non-zero) intrinsic sizing, constraints, no constraints and various types of NSViews, but ... if I '.addView(...)' or '.insertView(...)' more than once, in any 'NSStackView' gravity area, the subsequent views overlay the previous ones and position themselves on the particular baseline. This is the edge closest to the floor of my office, regardless of the stack orientation.

Any 'NSStackView' and AutoLayout help, either emotional or technical, is most appreciated.

0 投票
1 回答
216 浏览

objective-c - NSStackView 中单个内容视图的多个实例

我正在创建一个需要有一个进度窗口的应用程序,我想在其中为每个正在处理的项目动态插入一个子视图,例如 Finder 的复制文件面板窗口。并且在处理完成时动态删除它。

我想对所有子视图使用相同的NSViewController视图,并且我正在使用NSStackView来管理视图。

但是,为了让子视图留在内存中,我必须保持对它们的强引用,而我知道的唯一方法是为我需要显示的每个子视图创建一个属性。像这样:

我想知道是否有更好,更动态的方式来做到这一点?或者我是否必须为子视图创建 x 个属性才能知道我有足够的实例来分配,因为我无法确定用户在运行应用程序和导出项目时需要多少进程视图。

因此,我想动态分配每个子视图并创建对它的强引用。那可能吗?还是有另一种方法可以做我想做的事?

如果我不清楚,请告诉我,我很乐意解释更多以获得有关此问题的帮助。

0 投票
1 回答
2121 浏览

objective-c - 以编程方式将视图添加到 NSStackView 后视图无法正确显示

我正在尝试向 NSStackView 添加一些视图(本例中为 NSTextField):

我已将 NSStackView 实例添加到 XIB 文件中,将其作为小部件链接到 Outlet到Document中。在...didLoadNib我正在这样做:

TextFields 被放置到 StackView 中,但它们被放置在相同的位置,即第二个完全重叠。我仍然可以通过 [space+tab] 先选择。

这是控制台输出:

XIB 和结果截图: 西博

结果

StackView 没有添加任何约束。StackView 应该是垂直的。将有动态数量的文本字段添加到 stackview。