NSStackView 和内容拥抱优先级

NSStackView and content hugging priority

NSStackView 与常规 NSView 相比有 2 个额外的优先级,即 clippingResistancePriorityhuggingPriority. 该文档提供了一些合理的解释它们的用途和用途他们有。

但是4个优先级有点矫枉过正。

现在,他们在上述文档中提到:

A stack view has no intrinsic content size and does not have a configurable content compression resistance. Calling the setContentCompressionResistancePriority:forOrientation: method on a stack view has no effect.

然而,contentHuggingPriority被遗忘在阴影中。 似乎 NSStackView 对这个也没有反应——或者至少我没能做到。

有人可以证实或反驳吗?

是的,这是正确的。从 NSView 继承的内容约束优先级:

- (NSLayoutPriority)contentHuggingPriorityForOrientation:(NSLayoutConstraintOrientation)orientation NS_AVAILABLE_MAC(10_7); - (NSLayoutPriority)contentCompressionResistancePriorityForOrientation:(NSLayoutConstraintOrientation)orientation NS_AVAILABLE_MAC(10_7);

仅适用于基于视图的 intrinsicContentSize 创建的约束,NSStackView 没有。所以就像你和文档提到的那样,它们没有效果。 (除非您将 NSStackView 子类化并覆盖 intrinsicContentSize 以赋予它一些价值...)