问题标签 [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 投票
1 回答
459 浏览

cocoa - 如何使 NSStackView 截断最右边的 NSTextField

我的 UI 中有一行,由固定大小的字符串 (FS)、固定大小的图像和可变大小的字符串 (VS) 组成。我需要这条线在它的超级视图中居中,如果它不再适合它,可能会截断 VS。就像启用截断的简单居中 NSTextField 一样。但是 NSTextField 不能保存 NSI​​mage AFAIK。

我想 NSStackView 应该能够做到这一点。我已经将它设置为在它的超级视图中居中,并且里面有一个 NSTextField、NSImage 和 NSTextField。但是当我将 VS 设置为非常长的值时,FS 和 VS 都会被推出超级视图边界并被剪裁。

有没有办法告诉 NSStackView 永远不要将 FS 移出超级视图边界,而是截断 VS?还是有任何其他技术可以实现我的目标?

到目前为止我已经尝试过:

  1. 在VS上使用NSStackView并将compressionResistance设置为499 - 没有效果
  2. 使用 NSTextView - 无法使其截断文本并适合单行。也似乎是矫枉过正

  3. 使用 NSView - 它需要我设置 x 位置,所以它没有正确居中。

我可以使用 NSView 并计算字符串的大小并修改约束以使其工作。但我认为必须有更好的方法。

感谢您的任何想法,

J。

0 投票
2 回答
303 浏览

objective-c - NSStackView / NSScrollView - 一分为二的 NSStackview 子视图?

这将很难解释。我正在修改 Apple 的 InfoBarStackView 示例代码。我遇到的问题是,其中一个子视图看起来好像被 NSStackview 一分为二并单独呈现。

在我的示例中,我将 4 个子视图添加到我的堆栈视图中,每个子视图的大小完全相同(和相同的代码)。然后将其放入 NSScrollView。(布局是垂直的。)

当应用程序运行时,我看到了前两个子视图。当我向下滚动时,奇怪的事情就开始了。随后的视图被渲染,其中底部被渲染,然后顶部被渲染。如果垂直大小为 272 像素,则底部渲染为 256 像素,顶部为余数 (16)。向下滚动到最后一个视图会导致同样的问题。

附上一些屏幕截图来说明: 启动时 NSStackView 中的 NSViews..

NSStackView 中的 NSViews 被分成两部分..

我有一个 Xcode 8 的示例项目。如果有人想看看,我已经在这里发布了 Xcode 8 项目。我似乎无法弄清楚这一点。

0 投票
1 回答
524 浏览

swift - 如何获取 NSStackView 作为 NSAlert 的附件视图?

我正在 macOS 上使用 Swift 编写应用程序。我想创建一个带有垂直 NSStackView 的 NSAlert,让用户从 N 个选项中选择一个。为此,我将我的 NSStackView 连接到我的 NSAlert 的附件视图属性中,并且由于某种原因我的单选按钮不显示。

这是我到目前为止所尝试的:

这向我显示了我的 NSAlert,其中有一个标记为 Foo 的单选按钮。所以附件视图似乎工作。

现在我将单选按钮放在 StackView 中:

现在单选按钮不再出现。在 StackView 中添加更多单选按钮也无济于事。

0 投票
0 回答
187 浏览

swift - NSStackview 中的冗余边框

早上好 :)

我在 macOS 上使用 swift 4 并第一次使用 NSStackViews。我建立了一个小例子:

  • NStackView
  • 包括三个 NSBoxes
  • 所有的盒子都有一个 1px 的边框(不同的颜色),这是我通过 Storyboard 设置的。

“美丽”的结果:

在此处输入图像描述

我试图在这张照片中展示我的问题。您可以看到第一个框是蓝色的,第二个是绿色的,第三个是橙色的。

在这种情况下,我每次都有两个框之间的边框。示例:在第一个和第二个框之间,我有一个蓝色/绿色边框。

是否可以只设置一个边框?像:只有上边框还是只有左边框?

0 投票
0 回答
461 浏览

nstableview - 以编程方式将 NSTableView 添加到 NSStackView

我想知道使用 Swift 3/MacOS Sierra 以编程方式在 NSStackView 中添加 NSTableView。

我们的想法是让 2 个 NSTextFields 通过 .leading 重力空间中的 centerY 轴对齐,然后是 .center 重力空间中的一个 tableview,然后再有 2 个 NSTextFields 通过 .trailing 重力空间中的 centerY 轴对齐。堆栈视图将跨越 NSView 的宽度——就像一个标题。

这是个好主意还是我应该避免这样做?很难让它看起来正确——尽管添加了约束以尝试将其固定到固定宽度,但表格的宽度总是太大。

任何见解将不胜感激。我是 MacOS 编程新手。

谢谢,

这是 Interface Builder 中的 输出:headerview 的输出

这是我正在使用的 NSView 的代码: 视图控制器在别处,但视图控制器并没有真正的问题——它正确地显示了表中的数据。这只是 tableview 的大小/定位(我试图通过 NSStackView 在 NSView 中做)总是错误的。它的宽度应该为 650,但宽度为 907,并且我在调试控制台中一直收到相同的错误:

2017-09-12 17:43:36.041062-0500 RaceProgram[795:36958] [Layout] 检测到 < RacingProgram.RaceImportViewHeader: 0x6000001ccd50 > 缺少约束。无法放置,因为没有足够的约束来完全定义大小和原点。添加缺少的约束,或设置 translatesAutoresizingMaskIntoConstraints=YES 并且将为您生成约束。如果此视图在 macOS 10.12 及更高版本上手动布局,您可以选择不从覆盖中调用 [super layout]。在 DETECTED_MISSING_CONSTRAINTS 上设置断点进行调试。此错误只会记录一次。

}

0 投票
2 回答
2697 浏览

swift - 用动画隐藏 NSStackView 的视图项

我在 macOS 上使用 swift 4,我想隐藏一个带有动画的堆栈视图项。

我试过这个:

结果将是:

在此处输入图像描述

有用!但我对动画风格不满意。我的愿望是:

  • 我按下按钮,红色视图将在右侧变小
  • 我按下按钮,左侧的红色视图会变大。

就像一个侧边栏,或者如果你有一个 splitview 控制器,你会做splitviewItem.animator().isCollapsed = true

这个显示/隐藏动画是完美的。这个愿望可能吗?

更新 self.stack.arrangedSubviews.last!.animator().frame = NSZeroRect

在此处输入图像描述

更新 2

self.stack.arrangedSubviews.last!.animator().frame = NSRect(x: self.stack.arrangedSubviews.last!.frame.origin.x, y: self.stack.arrangedSubviews.last!.frame.origin.y, width: 0, height: self.stack.arrangedSubviews.last!.frame.size.height)

在此处输入图像描述

0 投票
1 回答
431 浏览

swift - NSViewController IBOutlet 始终为零

我有一个 Cocoa 应用程序,它有一个 mainNSWindowController和一个内部NSView连接到这样的NSViewController对象:

在此处输入图像描述

CloudCardsViewController 是一个NSViewController带有它的NibIBOutlet一个NSStackView. 当我尝试访问插座时,应用程序崩溃并在控制台上显示此错误:

致命错误:在展开可选值时意外发现 nil 2017-09-16 19:46:43.756852+0200 AppName[3402:150754] 致命错误:在展开可选值时意外发现 nil

如果我NSViewController通过代码添加,工作正常...

这是代码: 在此处输入图像描述

如果我打印baseStackView结果是nil

任何想法?谢谢!

0 投票
1 回答
200 浏览

nsstackview - 为什么添加到 NSStackView 时只有一个子视图可见

我正在尝试以编程方式将一些 NSTextField 添加到水平堆栈视图,但 StackView 只有一个字段可见并且该字段排列不正确。

我已经尝试了以下相同的结果

它似乎在 Interface Builder 中工作正常 - 添加额外的子视图会导致它自动显示它们并调整它们的大小。

0 投票
1 回答
74 浏览

objective-c - 如何将 NSStackView 注入视图层次结构?

我有一个用 Objective-C 编写的 OSX 应用程序。它显示了一些NSViewNSWindow问题是我无法修改它的代码。原始模型层次结构如下所示:

我想改变层次结构如下:

如何使用?NSView_NSViewNSStackView

我目前的方法或多或少是这样的(示例已简化):

不幸的是NSWindow,运行此代码后仅显示“第二视图”标签:

结果

0 投票
1 回答
520 浏览

swift - 如何在带有动画的 NSStackView 中添加视图?

在界面生成器中,我在 NSStackView(垂直方向)中有几个视图(A、B、C)。在运行时,我通过属性观察器 (willSet) 显示或隐藏 (isHidden) 一些嵌入式视图来动态更改 NSStackView。如果下面的代码确实有效(视图相应地显示或隐藏),我无法用动画来做到这一点。

据我了解,动画不处理 isHidden 状态,但我没有找到其他方法。或者,我也尝试使用 addView 和 removeFromSuperview 方法(而不是隐藏/显示)。结果一样...

我的问题是我主要发现了与iOS相关的问题(UIView.animate ...),而没有关于MacOS(NSView)...

有任何想法吗 ?

非常感谢你的帮助,乔