【问题标题】:Move other Views to the view which is hidden [closed]将其他视图移动到隐藏的视图[关闭]
【发布时间】:2016-08-08 03:10:06
【问题描述】:

你好,我是 IOS 新手,我正在努力实现我正在尝试实现的一项功能。我有一个UIViewController,其中我在顶部显示自定义UIView,在下面我有一个动态TableView。我在某些情况下隐藏并显示自定义 UIView 但问题是如果我隐藏它,我的表格不会取代该视图,因此我可以看到那里的空间。我想我已经对自动布局做了一些事情,但我不擅长自动布局,所以如果有人能提供帮助会很棒。我在这里附上一个演示屏幕,以便您理解。我应该怎么做才能使它工作,以便在 UIView 隐藏时表格将占据自定义 UIView 位置

这是我得到的结果如果我隐藏上面的部分自定义 UIView

【问题讨论】:

  • 隐藏的“UIView”有什么限制?根据您的限制,有不同的方式来实现您的想法。
  • @TonyHan width = 414 , height = 103 , left = 0 and right = 0

标签: ios swift uitableview uiview autolayout


【解决方案1】:

为了实现此功能,您需要执行以下步骤:

  1. 为您的顶视图创建高度约束并将其保存在@IBOutlet 中

@IBOutlet 弱变量 topViewHeightConstraint : NSLayoutConstraint!

  1. 当您隐藏顶视图时,还将您的高度约束更改为 0,以便 tableview 将取代它的位置。为了将其更改为 0,您只需将常量值更改为 0

topViewHeightConstraint.constant = 0

可以在here找到一个快速项目的下载链接,该链接显示了如何做到这一点

【讨论】:

  • 感谢您的回答.. 我按照您的步骤操作,但对我不起作用
  • 还要确保你的tableView和topView之间的垂直间距等于0
  • 在你更新你的 Constraint 之后,你需要添加 self.view.setNeedsUpdateConstraints() 然后 self.view.layoutIfNeeded() 来更新你的布局
  • @Stephen 您无需调用这些函数即可使其正常工作。你只需要确保你设置了所有的约束和自动布局来完成剩下的工作
  • @RanHassid 你是对的,我只是注意到代码在 viewDidLoad() 中,它发生在 Autolayout 实际发生之前,所以不需要那些方法...
猜你喜欢
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 1970-01-01
  • 2023-02-11
相关资源
最近更新 更多