【问题标题】:Storyboard reduce gap between views故事板减少视图之间的差距
【发布时间】:2019-08-09 09:30:04
【问题描述】:

我正在开发一个示例项目,该项目具有三个视图,在情节提要中每个间隙垂直 10。我确实使用以下代码隐藏了第二个视图:

@IBOutlet var height:NSLayoutConstraint?
  height?.constant = 0

view1 和 view3 之间的差距是 20。 如何将 view1 和 view3 之间的差距缩小到 10?

【问题讨论】:

  • 请显示您正在使用的代码...另外,您是否使用 UIStackView 这将免费发生。
  • 我没有使用 UIStackview
  • 我知道。我可以从您显示的代码的 sn-p 中看出。这就是为什么我建议使用 UIStackView。它使这更容易。

标签: ios swift nslayoutconstraint


【解决方案1】:

我鼓励你在这种情况下使用UIStackView,因为它会做你想做的事情。

用户垂直 UIStackView 间距为 10。您可以通过 xib、情节提要或代码来完成此操作。

例子:

let stackView = UIStackView(arrangedSubviews: [view, secondView, thirdView])
stackView.axis = .vertical
stackView.alignment = .fill
stackView.spacing = 10.0

【讨论】:

  • 知道如何在没有 UIStackview 的情况下处理它吗?
  • @karthi 如果 UIStackView 更易于使用且易于管理,那么使用它有什么问题?
  • 我必须在一个没有 UIStackview 的项目中解决这个问题
  • @karthi 使用堆栈视图修复它。 ?
  • 您可以使用堆栈视图轻松修复它。只需将视图嵌入堆栈视图和堆栈视图的约束
【解决方案2】:

如果您不想使用UIStackView,则需要使用secondViewconstraints

secondView 创建height, top, bottom constraint @IBOutlet 并更新它们以显示/隐藏案例,即

@IBOutlet weak var secondViewHeightConstraint: NSLayoutConstraint!
@IBOutlet weak var secondViewTopConstraint: NSLayoutConstraint!
@IBOutlet weak var secondBottomConstraint: NSLayoutConstraint!

func hideSecondView(_ hide: Bool) {
    secondViewHeightConstraint.constant = hide ? 0 : 50 //used 50 as the height of secondView
    secondViewTopConstraint.constant = hide ? 10 : 20
    secondViewTopConstraint.constant = hide ? 10 : 20

    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多