【问题标题】:NSStackView Subviews not Resizing Sub-stack viewsNSStackView 子视图不调整子堆栈视图的大小
【发布时间】:2018-08-02 02:32:41
【问题描述】:

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

【问题讨论】:

  • 好的,我尝试只添加一个没有子视图的 NSStackView,它拥抱父视图的墙壁。现在堆栈视图的行为如我所愿,使用父视图调整大小。

标签: ios swift xcode macos cocoa


【解决方案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)

【讨论】:

  • 内容压缩阻力与视图扩展无关。就像它说的那样,它抵抗低于其固有内容大小的压缩,而不是扩展。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2013-04-12
    • 2011-03-18
    相关资源
    最近更新 更多