创建半透明覆盖以模仿 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]
中——它只有一个应用程序拥有的UIWindow
s 列表。 (除此之外,你的答案是正确的)
谢谢!我完全忽略了 windowLevel 属性。不幸的是,我还在文档中发现 Apple 强烈反对在应用程序中创建多个窗口,尤其是在显示警报的情况下。我想知道这样做是否不会在以后对我造成伤害并导致被 App Store 拒绝。以上是关于创建半透明覆盖以模仿 UIAlertView 或 UIActionSheet?的主要内容,如果未能解决你的问题,请参考以下文章