将其他视图移动到隐藏的视图[关闭]

Posted

技术标签:

【中文标题】将其他视图移动到隐藏的视图[关闭]【英文标题】: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 ***.com/questions/32804655/… 【参考方案1】:

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

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

@IBOutlet 弱变量 topViewHeightConstraint : NSLayoutConstraint!

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

topViewHeightConstraint.constant = 0

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

【讨论】:

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

以上是关于将其他视图移动到隐藏的视图[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据传递给其他视图? [关闭]

关闭 Modal ViewController 将父视图隐藏在状态栏后面

同时关闭带有视图的键盘

模态 UINavigationController 隐藏但不关闭

如何在自动布局中使用 UITableViewCell 的动态高度并在底部视图隐藏时将其他视图向上移动?

Swift 4隐藏一个视图,因此onclick适用于它下面的视图[关闭]