【问题标题】:How to show one viewcontroller over other as overlay in iOS?如何在 iOS 中将一个视图控制器显示为叠加层?
【发布时间】:2016-03-14 11:50:28
【问题描述】:

我有两个视图控制器,控制器 ABA 控制器在屏幕上显示一些信息。在A 屏幕的右上角我有一个UIButton 点击按钮我想显示一个带有一些标签的帮助屏幕,当我触摸帮助屏幕时它应该消失。

我可以通过在所有视图之上添加一个视图并隐藏、显示它来做到这一点。但我想知道如何在单击UIButton 时将HelpScreenViewController 显示为第一个视图控制器顶部的半透明视图控制器。当我点击HelpScreenViewController 时,它应该会消失。

编辑: 我添加了下面的代码但不起作用

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"TopOverVc"];
    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
    [self presentViewController:vc animated:NO completion:nil];

提前致谢。

【问题讨论】:

标签: ios objective-c uiviewcontroller


【解决方案1】:

对于您所描述的,您不需要 ViewController 来包含“TopOver”视图。一个普通的 UIView 会更好。将它放在您的第一个 ViewController 中,在界面构建器中。将它与按钮一起拖到您的 A ViewController 类中。单击按钮时,只需显示/隐藏包含所需信息的视图。

【讨论】:

  • 我知道,但在这种情况下,我的代码在一个文件中会变得很长。只是为了避免我使用另一个视图控制器,以便我可以在 otehr 文件中编写帮助屏幕代码
  • 你仍然可以把你的代码放在一个单独的文件中——把它放在你的 UIView 子类中。将您的 UIView 添加到 IB 中的 UIViewController。然后创建一个新文件,一个 UIView 的子类 - 称之为 HelpView 或类似的东西。然后在 IB 中,找到您的 UIView 并将其类更改为 HelpView。现在你可以把你所有的代码放到你的新类中,而不必放到 UIViewController 中。
  • @LukeSmith 我喜欢你的想法,但是当我向下滚动视图时如何关闭视图?苹果是否提供了类似于“dismissviewcontroller”的任何方法,该方法仅适用于视图控制器,但我想为我的 UIView 获得类似的功能。
【解决方案2】:

您可以使用 containerView 控件,并且可以为其添加 childViewController。您可以根据需要将背景颜色设置为透明,将其用作叠加层。

本文可能对你有所帮助http://spin.atomicobject.com/2015/07/21/ios-container-views/

还有一点,你可以根据需要设置这个containerview隐藏/可见。

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多