将其他视图移动到隐藏的视图[关闭]
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 隐藏但不关闭