从布局中删除视图并让其他元素重新组织自己

Posted

技术标签:

【中文标题】从布局中删除视图并让其他元素重新组织自己【英文标题】:Removing view from layout and having other elements re-organize themselves 【发布时间】:2016-06-03 13:10:46 【问题描述】:

我有以下屏幕:

如果点击 Go Pro 并购买应用内的应用,那么我想从屏幕上删除广告,然后让两个圆形按钮转到屏幕的最底部。

我认为的一种可能性是有一个水平堆栈视图来容纳三个按钮和一个垂直堆栈视图,它首先会容纳水平堆栈视图,然后是广告视图。

这个解决方案是最好的还是有更聪明的?

谢谢。

更新:

这是现在发生的事情: 只有一个按钮的垂直间距约束:

两个按钮都有垂直间距限制

【问题讨论】:

只给该admob视图提供高度约束并制作出口,当您将其移除时将其约束设置为0 你可以检查一下...***.com/questions/32804655/… 如果你使用的是 ios 9.0 及更高版本,stackview 很好用 您好,谢谢您的回复!我不认为我理解它。我的 AdsMob 视图的高度约束为 50。您是说我需要将 Admob 的高度约束作为 Outlet 并将其常量设置为零? 好的,谢谢。如何找到我的 AdView UIView Outlet 的高度限制? “adsUIView.constraints”行返回一个 [NSLayoutConstraint]。如何找到高度? 哦,我明白了。它几乎就在那里,但并不完全。我会继续努力并让你知道。非常感谢! 【参考方案1】:

如果您使用的是 iOS 9.0 及更高版本,您可以使用 stackview 否则将底部视图的高度限制设置为 0 on close ad mob。

对于另一个问题,即按钮拉伸..添加一个包含这 3 个按钮的视图并向该视图添加约束...只需检查下面的图像并给出约束...

现在关闭 admob,只需将高度约束常量设置为 0

结果将是

【讨论】:

哇,太棒了!非常感谢!谢谢你做这一切。现在工作得很好!这么多关于那些约束漏洞的知识! @FelipeCaldas 很乐意帮助你,我的朋友 :)

以上是关于从布局中删除视图并让其他元素重新组织自己的主要内容,如果未能解决你的问题,请参考以下文章

setNeedsLayout 仅在显示后重新布局单元格

如果在自动布局中删除子视图,则重新排列 UIView 子视图

从listView中删除项目仅删除最后一项未选择的元素android

自定义视图布局线覆盖 API 16 中的其他元素

在 CSS3 中重新启动动画:比删除元素更好的方法吗?

从 DOM 中删除违规元素时,无效的表单不会重新计算其有效性