问题标签 [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.
cocoa - 如何使 NSStackView 截断最右边的 NSTextField
我的 UI 中有一行,由固定大小的字符串 (FS)、固定大小的图像和可变大小的字符串 (VS) 组成。我需要这条线在它的超级视图中居中,如果它不再适合它,可能会截断 VS。就像启用截断的简单居中 NSTextField 一样。但是 NSTextField 不能保存 NSImage AFAIK。
我想 NSStackView 应该能够做到这一点。我已经将它设置为在它的超级视图中居中,并且里面有一个 NSTextField、NSImage 和 NSTextField。但是当我将 VS 设置为非常长的值时,FS 和 VS 都会被推出超级视图边界并被剪裁。
有没有办法告诉 NSStackView 永远不要将 FS 移出超级视图边界,而是截断 VS?还是有任何其他技术可以实现我的目标?
到目前为止我已经尝试过:
- 在VS上使用NSStackView并将compressionResistance设置为499 - 没有效果
使用 NSTextView - 无法使其截断文本并适合单行。也似乎是矫枉过正
使用 NSView - 它需要我设置 x 位置,所以它没有正确居中。
我可以使用 NSView 并计算字符串的大小并修改约束以使其工作。但我认为必须有更好的方法。
感谢您的任何想法,
J。
objective-c - NSStackView / NSScrollView - 一分为二的 NSStackview 子视图?
这将很难解释。我正在修改 Apple 的 InfoBarStackView 示例代码。我遇到的问题是,其中一个子视图看起来好像被 NSStackview 一分为二并单独呈现。
在我的示例中,我将 4 个子视图添加到我的堆栈视图中,每个子视图的大小完全相同(和相同的代码)。然后将其放入 NSScrollView。(布局是垂直的。)
当应用程序运行时,我看到了前两个子视图。当我向下滚动时,奇怪的事情就开始了。随后的视图被渲染,其中底部被渲染,然后顶部被渲染。如果垂直大小为 272 像素,则底部渲染为 256 像素,顶部为余数 (16)。向下滚动到最后一个视图会导致同样的问题。
我有一个 Xcode 8 的示例项目。如果有人想看看,我已经在这里发布了 Xcode 8 项目。我似乎无法弄清楚这一点。
swift - 如何获取 NSStackView 作为 NSAlert 的附件视图?
我正在 macOS 上使用 Swift 编写应用程序。我想创建一个带有垂直 NSStackView 的 NSAlert,让用户从 N 个选项中选择一个。为此,我将我的 NSStackView 连接到我的 NSAlert 的附件视图属性中,并且由于某种原因我的单选按钮不显示。
这是我到目前为止所尝试的:
这向我显示了我的 NSAlert,其中有一个标记为 Foo 的单选按钮。所以附件视图似乎工作。
现在我将单选按钮放在 StackView 中:
现在单选按钮不再出现。在 StackView 中添加更多单选按钮也无济于事。
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 上设置断点进行调试。此错误只会记录一次。
}
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)
swift - NSViewController IBOutlet 始终为零
我有一个 Cocoa 应用程序,它有一个 mainNSWindowController
和一个内部NSView
连接到这样的NSViewController
对象:
CloudCardsViewController 是一个NSViewController
带有它的Nib
和IBOutlet
一个NSStackView
. 当我尝试访问插座时,应用程序崩溃并在控制台上显示此错误:
致命错误:在展开可选值时意外发现 nil 2017-09-16 19:46:43.756852+0200 AppName[3402:150754] 致命错误:在展开可选值时意外发现 nil
如果我NSViewController
通过代码添加,工作正常...
如果我打印baseStackView
结果是nil
任何想法?谢谢!
nsstackview - 为什么添加到 NSStackView 时只有一个子视图可见
我正在尝试以编程方式将一些 NSTextField 添加到水平堆栈视图,但 StackView 只有一个字段可见并且该字段排列不正确。
我已经尝试了以下相同的结果
它似乎在 Interface Builder 中工作正常 - 添加额外的子视图会导致它自动显示它们并调整它们的大小。
swift - 如何在带有动画的 NSStackView 中添加视图?
在界面生成器中,我在 NSStackView(垂直方向)中有几个视图(A、B、C)。在运行时,我通过属性观察器 (willSet) 显示或隐藏 (isHidden) 一些嵌入式视图来动态更改 NSStackView。如果下面的代码确实有效(视图相应地显示或隐藏),我无法用动画来做到这一点。
据我了解,动画不处理 isHidden 状态,但我没有找到其他方法。或者,我也尝试使用 addView 和 removeFromSuperview 方法(而不是隐藏/显示)。结果一样...
我的问题是我主要发现了与iOS相关的问题(UIView.animate ...),而没有关于MacOS(NSView)...
有任何想法吗 ?
非常感谢你的帮助,乔