【问题标题】:Unable to set a dim background to a modal view无法将暗背景设置为模态视图
【发布时间】:2015-09-22 06:38:57
【问题描述】:

我正在开发一个针对iOS 7 及更高版本的应用程序。我想以模态方式呈现一个背景暗淡的视图,该视图部分显示了下面的前一个视图。我已经阅读了几篇处理这种情况的帖子,我做到了:

  1. storyboard 中创建了一个视图控制器场景并设置了一个模态segue 以导航到它。
  2. 将该模态序列的Presentation 值设置为Current Context
  3. 将视图控制器的视图背景颜色设置为清除颜色。
  4. 在父视图上方添加了全屏视图,背景为黑色,不透明度为 50%。

到模态视图的转换是默认的和动画的。在动画时,我看到视图呈现为半透明,但是一旦过渡动画结束并且视图最终占据全屏,视图就会变成不透明的黑色。

我做错了什么?我该如何解决这个问题?

【问题讨论】:

  • 只是关于最后一条语句的注释:它可能不会变得不透明,但后面的视图不再渲染,前面的视图仍然是透明的,但后面不再有任何东西显示出来。

标签: ios uiview background modal-dialog opacity


【解决方案1】:

正如@luk2302 所说,当您以模态方式呈现视图控制器时,iOS 会从视图层次结构中删除其下方的视图控制器,因此除了应用程序窗口(黑色)之外,它下方没有任何内容。不管怎样,iOS 7 有一个新的模态展示风格,UIModalPresentationCustom,它强制 iOS 不移除呈现的视图控制器下面的视图。但是您必须提供自己的转换委托来处理演示和关闭动画 查看this link如何实现自定义转换委托。

【讨论】:

  • 如果我想要呈现的模态视图除了向用户显示一条消息并被关闭之外没有更多的目的,那么实际上是否应该只创建一个视图并将其添加到当前视图之上?
  • 不,视图控制器还在,只是没有渲染。
  • 这就是为什么我认为只需将我想要的子视图添加到当前视图和视图控制器,而不用自己的视图控制器显示模型视图......应该可以工作,对吧?我只想显示一种带有昏暗背景和自定义关闭按钮的警报...
  • 最简单最简单的解决方案。但不是那么优雅。只需使用bringSubviewToFront: 方法将变暗的背景置于一切之上。您可以在需要时使用sendSubviewToBack: 方法将其发送回层次结构的底部。
猜你喜欢
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 2018-04-22
相关资源
最近更新 更多