【问题标题】:Create semi-transparent overlay to mimic UIAlertView or UIActionSheet?创建半透明覆盖以模仿 UIAlertView 或 UIActionSheet?
【发布时间】:2010-03-11 00:10:56
【问题描述】:

在我目前正在开发的 iPhone 应用程序中,我展示了几个模仿 UIAlertView 和 UIActionSheet 行为的“警报”视图。这些视图需要在 UIAlertView 或 UIActionSheet 中不可用的非标准元素。我没有尝试子类化,而是创建了自己的类,以便轻松自定义警报的外观。

我遇到的一个问题是在显示警报视图时我无法淡化 iPhone 屏幕。当以与 UIAlertView 和 UIActionSheet 相同的方式呈现我的自定义视图时,我想淡出整个屏幕(包括状态栏)。我试图通过在整个屏幕上覆盖半透明视图来实现这一点,但无论我将视图添加为 keyWindow 的子视图还是最顶层视图,状态栏都不会被遮蔽。

有没有人对如何做到这一点有任何建议?这似乎应该很容易做到,所以我可能忽略了一些东西。

【问题讨论】:

    标签: iphone fullscreen uialertview uiactionsheet


    【解决方案1】:

    我还没有这样做,但是如果您想在状态栏上覆盖任何内容,我会说您必须创建一个 UIWindow 实例并将其 windowLevel 设置为 UIWindowLevelStatusBar。或者在视图层次结构中找到状态栏窗口,并在其中添加一个半透明的子视图。

    【讨论】:

    • 状态栏窗口不会出现在[[UIApplication sharedApplication] windows] 中——它只有一个应用程序拥有的UIWindows 列表。 (除此之外,你的答案是正确的)
    • 谢谢!我完全忽略了 windowLevel 属性。不幸的是,我还在文档中发现 Apple 强烈反对在应用程序中创建多个窗口,尤其是在显示警报的情况下。我想知道这样做是否不会在以后对我造成伤害并导致被 App Store 拒绝。
    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2014-11-15
    • 2016-02-25
    相关资源
    最近更新 更多