【问题标题】:Present transparent modal view from another modal view从另一个模态视图呈现透明模态视图
【发布时间】:2014-12-12 07:36:40
【问题描述】:

我试图在另一个模态视图上呈现一个透明的模态视图。我正在使用故事板。

我已将此添加到我的第一个模态视图中:

self.modalPresentationStyle = UIModalPresentationCurrentContext;

 [self performSegueWithIdentifier:@"sendUserMessage" sender:self];

这是我的第二个模态视图(我想出现在第一个模态视图上,第一个在背景中透明)

// Make the main view's background clear, the second view's background transparent.
    self.view.backgroundColor = [UIColor clearColor];
    UIView* backView = [[UIView alloc] initWithFrame:self.view.frame];
    backView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
    [self.view addSubview:backView];

但我似乎无法与我的 UI 进行交互,并且后屏幕在完全加载后变黑(虽然一开始是透明的)。

我认为这是因为我是从另一个模态视图中进行的?

【问题讨论】:

    标签: ios objective-c modalviewcontroller


    【解决方案1】:

    默认情况下,当前视图控制器的视图将从窗口中删除。

    您可以通过将显示的视图控制器的modalPresentationStyle 设置为UIModalPresentationOverCurrentContextUIModalPresentationOverFullScreen 来更改此设置。两者都将覆盖的内容保留在屏幕上。

    编辑:以上样式都在 iOS 8 中引入。如果您希望呈现视图控制器的视图保留在 iOS 7 中,您必须使用自定义呈现样式并提供transitioningDelegate

    【讨论】:

    • 尝试将其更改为两者,均无效。我想我摆脱了 alpha backView 所以我只是将视图背景颜色设置为清除。我的模态视图上的文本字段也按照我的预期过渡,但是一旦它完全完成过渡,后面的模态视图仍然变黑。
    • 您在 iOS 7 上运行吗?我应该提到,这些样式是在 iOS 8 中引入的。
    • 不,我在 iOS 8 上运行 Xcode 6,奇怪的是它不能正常工作。
    • 奇怪。您是否有机会在呈现视图控制器而不是呈现视图控制器上设置属性?此外,请确保在开始演示之前设置属性。例如,如果您在呈现的视图控制器的 viewDidLoad 中设置属性,则为时已晚。
    • 我都试过把它放进去,但没有用。我把它们放在 viewWillAppear 中。加载后背景模态视图仍然变黑。顶部显示的模态视图很好,可以编辑,只是看不到后面的模态视图,由于某种原因它仍然变黑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多