创建半透明覆盖以模仿 UIAlertView 或 UIActionSheet?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

状态栏窗口不会出现在[[UIApplication sharedApplication] windows] 中——它只有一个应用程序拥有的UIWindows 列表。 (除此之外,你的答案是正确的) 谢谢!我完全忽略了 windowLevel 属性。不幸的是,我还在文档中发现 Apple 强烈反对在应用程序中创建多个窗口,尤其是在显示警报的情况下。我想知道这样做是否不会在以后对我造成伤害并导致被 App Store 拒绝。

以上是关于创建半透明覆盖以模仿 UIAlertView 或 UIActionSheet?的主要内容,如果未能解决你的问题,请参考以下文章

iphone 4 链接在触摸时创建红色半透明背景/覆盖:活动

如何创建半透明(后面有内容)UITabBar

如何在图像上制作半透明颜色?

如何让图片以半透明的效果显示在所有程序或窗口的最上层?

Android:半透明覆盖?

EMF(增强元文件)是不是支持不透明度?