【问题标题】:How to place any view below any other view which is getting it's position from code如何将任何视图放在从代码中获取其位置的任何其他视图下方
【发布时间】:2017-08-11 10:46:15
【问题描述】:

我创建了 4 个白色子视图和一个黄色子视图,您可以在下面分享的参考图片中看到。

我已经以编程方式将 Tabbar 的位置从底部到顶部更改为导航栏的下方,如下图所示(当它在模拟器中运行时)。

现在,由于我对图像中的黄色视图进行了如下限制

它出现在导航栏的正下方,但我希望它显示在标签栏的正下方。

由于 Tabbar 以编程方式获取其位置,而其他视图(包括黄色视图)正在从情节提要中获取其位置。 并且由于故事板 UI 元素在来自程序的任何其他 UI 元素之前得到解决,或者至少以编程方式获得它们的位置。

实现我想要的最好方法是什么。

请参考我的故事板以获得更多理解。 (参考下图)

我还想在标签栏和屏幕底部之间的空间中放置所有 5 个子视图。我想计算该空间的 1/5 并将这个高度分配给每个子视图。我稍后会减少几个像素以将它们分开。

【问题讨论】:

  • 你的视图控制器是哪个?我的意思是 UIViewController 或 UITableViewController 或 UICollectionViewController?
  • 容器视图中是否存在黄色和四个白色视图?比如collectionView还是stackView?
  • @AhmadF 不,它不在任何其他视图中。
  • 如果你把它们全部推到底部第四个白色视图会发生什么?它不会完全显示。
  • @AhmadF 请帮我把黄色视图放在正确的位置。在此之后我将发布其他问题以进行所有大小计算。

标签: ios swift xcode swift3 swift2


【解决方案1】:

为什么不将标签栏的高度添加到黄色视图的顶部位置?这样,您可以将约束设置为:

Fajar.top = top + 44

如果标签栏始终可见,那么应该可以。但是当然,如​​果选项卡栏只是偶尔出现,您可能必须根据更改以编程方式更改该约束...

【讨论】:

  • 如果不确定,不要直接给出答案,而是对问题发表评论。
  • 正如我在第二句话中所说,“如果标签栏有时只出现,您可能必须根据更改以编程方式更改该约束”。因此,您必须为布局约束获取 IBOutlet 并根据需要进行更改。硬编码是最简单的方法 - 但如果你愿意,你可以动态更改约束的常量值 - 我只是无法提供代码,因为我不知道你在做什么......
  • 我很确定我在说什么,在没有核实事实的情况下不要妄下结论:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-26
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多