【问题标题】:Add view to stack view and change height constraint to maintain ratio将视图添加到堆栈视图并更改高度约束以保持比率
【发布时间】:2017-12-27 16:37:45
【问题描述】:

将新视图添加到堆栈视图时,我想通过添加视图的数量增加堆栈视图高度约束来保持堆栈视图内的视图比例。我一直在阅读有关如何更新视图约束的信息,但似乎无法使其正常工作。

self.stackView?.insertArrangedSubview(self.userErrorLabel, at: 2)
self.heightConstraint = self.stackView?.heightAnchor.constraint(equalToConstant: 140 + self.stackView?.bounds.height)
self.stackView?.addConstraints([self.heightConstraint!])
self.stackView?.setNeedsLayout()

任何建议都会非常有帮助!

【问题讨论】:

  • 您也可以使用情节提要
  • 每当您添加任何约束时,首先您需要使所有先前的约束无效,并且它们是活动的新约束,否则可能会发生冲突。取ref
  • 不应在每次添加子视图时向 stackView 添加新约束。只需更新 stackview 的高度即可。
  • 是的,但是我的问题是如何更新视图上的 heightview 约束?我参考了它,因为我觉得这是最简单的方法,我在 view.constraints 中找不到它
  • 诀窍是首先删除约束,然后添加一个新约束。谢谢@ridvankucuk

标签: ios swift constraints


【解决方案1】:

您使用的是 XIB 还是故事板?您可以将高度约束注册为您的 View/VC 的 Outlet,然后您可以在那里编辑/增加高度。 假设您将高度约束注册为

@IBOutlet weak var stackViewHeight: NSLayoutConstraint!

你需要做的只是

let currentStackHeight = stackViewHeight.constant
stackViewHeight.constant = currentStackHeight + self.addedView.bounds.height

就这样,您不需要添加或删除任何约束

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多