将 Storyboard 的视图置于所有其他视图之上

Posted

技术标签:

【中文标题】将 Storyboard 的视图置于所有其他视图之上【英文标题】:Put a view on Storyboard above all others 【发布时间】:2015-07-21 13:36:13 【问题描述】:

我有一个 ViewController 文件,在这个 ViewController 文件中,我以编程方式创建了一个视图,它占据了窗口上所有可用的位置。

现在,我想用 Storyboard 创建一个视图。我把这个视图(在我的例子中是一个按钮)放在我的故事板上。

当我启动我的应用程序时,我看不到我的按钮,因为它位于我之前以编程方式创建的视图下。

这可以让我的故事板视图高于另一个视图吗?

非常感谢!

【问题讨论】:

您能否提供代码行,以便在 ViewController 中添加视图并将其添加到视图中。看起来你使用 addSubview 方法。 在方法中添加按钮视图吗? 【参考方案1】:

是的,这是可能的。

看起来你使用addSubview 方法。 您遇到的问题是以这种方式添加的视图覆盖了现有视图。

您可以使用bringSubviewToFront 将按钮置于最前面,也可以使用insertSubview:belowSubviewinsertSubview:aboveSubview 来解决此类问题。在这两种情况下,您都需要将按钮存储在属性中。

【讨论】:

【参考方案2】:

这在某种程度上取决于您的视图层次结构设置。

我假设:

A - View controller view
  | B - Your button 
  | C - Programmatically added fullscreen view

在上述情况下,您可以这样做:

- (void)viewDidLoad

    [super viewDidLoad];

    [self.view bringSubviewToFront:self.button];

Point is bringSubviewToFront: 将子视图移动到层次结构的顶部。

【讨论】:

【参考方案3】:

所以你必须为按钮创建一个插座(将故事板中的按钮连接到你的 .swift 文件中给它的名称)一旦你以编程方式添加了视图,你只需要这样做

self.view.bringSubviewToFront(button)

假设该按钮是插座的名称。此行将在以编程方式添加视图后添加。

【讨论】:

以上是关于将 Storyboard 的视图置于所有其他视图之上的主要内容,如果未能解决你的问题,请参考以下文章

将 Storyboard 视图中的所有内容移动到滚动视图中

将 Storyboard 和 xib 用于同一个视图控制器?

导航控制器将 Storyboard 中的所有视图向下移动 64 像素,尽管它被隐藏了。

Storyboard xib 实时视图在左上角呈现所有子视图

将视图添加到 StoryBoard 中的 CollectionView 标题

Storyboard Scrollview with StackView inside not scrolling