NSStackView子视图未调整子堆栈视图的大小

时间:2018-08-02 02:32:42

标签: ios swift xcode macos cocoa

我在一个NSView的1个垂直NSStackView中有2个水平的NSStackView。即使有约束,我似乎也无法调整整个视图的大小。如果通过拖动IB视图手柄增加宽度,则视图将增大。但是似乎如果我尝试通过将IB视图手柄向彼此拉来缩小它们,则堆栈视图停止缩小父视图宽度为800 pix。有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

如果您希望垂直NSStackView内的子视图填充其父级宽度,请减小contentCompressionResistancePriority

myChildView.translatesAutoresizingMaskIntoConstraints = false
myChildView.setContentCompressionResistancePriority(
  NSLayoutConstraint.Priority(rawValue: 1),
  for: .horizontal
)

NSLayoutConstraint.activate([
  myChildView.heightAnchor.constraint(equalToConstant: 50)
])

NSAnimationContext.runAnimationGroup({context in
  context.duration = 0.25
  context.allowsImplicitAnimation = true
  stackView.insertArrangedSubview(myChildView, at: 1)

  view.layoutSubtreeIfNeeded()
}, completionHandler: nil)

答案 1 :(得分:0)

添加了单个水平NSStackView(先前的注释)后,我添加了两个垂直NSStackView,然后将内容压缩阻力优先级设置为最低设置(250)。