故事板减少视图之间的差距

Posted

技术标签:

【中文标题】故事板减少视图之间的差距【英文标题】: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。它使这更容易。 【参考方案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()
    

【讨论】:

以上是关于故事板减少视图之间的差距的主要内容,如果未能解决你的问题,请参考以下文章

在多个子类之间共享故事板视图控制器

故事板中视图控制器之间的共享实例

定义一个可以在运行时在视图之间切换的故事板

在没有Segues的故事板之间传递变量 - Swift

如何通过同一个 ViewController(在故事板上创建)在两个视图(在 xib 上创建)之间切换?

通过替换 Windows 根控制器在多个故事板之间移动