gpt4 book ai didi

iphone - 在所有其他 View 之上添加 UIView,包括 StatusBar

转载 作者:太空狗 更新时间:2023-10-30 03:10:06 25 4
gpt4 key购买 nike

我想创建一个 View (UIControl),它会阻止所有输入并在对用户进行身份验证时显示 UIActivityIndi​​catorView。

UIActionSheet 和 UIAlertView 都设法在所有其他 View 的顶部添加一个黑色半透明 View 以阻止输入,我想做类似的事情。

我已经尝试将我的 View 添加到 [[UIApplication sharedApplication] windows] 数组中的顶部 UIWindow,虽然这确实将它放置在 UIKeyboard 上方(如果它可见),但它不会将它放置在 StatusBar 上方(这使得感)。

我的下一个尝试是扩展 UIAlertView,删除它的所有 subview 并设置它的 layer.contents = nil,然后添加 ActivityIndi​​cator 作为 subview 。这很好用,但当您将它称为“显示”时,我似乎无法终止 UIAlertView 的默认弹性过渡。

有没有人对解决这个问题的最佳方法有任何指示,让我可以完全控制?

哦,我知道阻止输入不是很好,但我确实确保它会持续很短的时间,并且它的好处是让用户清楚他们的操作(必须完成才能继续进行)正在处理中。

最佳答案

我已经围绕 API 进行了更多挖掘,相信我已经解决了。

为了在整个屏幕上显示 View ,您需要创建自己的 UIWindow 并将其 windowLevel 属性设置为 UIWindowLevelStatusBar。然后,您可以将自定义 subview 添加到此窗口。

请注意,Apple 不鼓励,但也不禁止创建多个窗口。

UIWindow *statusWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
statusWindow.windowLevel = UIWindowLevelStatusBar;
statusWindow.hidden = NO;
statusWindow.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.7];
[statusWindow makeKeyAndVisible];

当你想从屏幕上删除窗口时,看起来就像是从内存中释放它一样。

[statusWindow release];

这感觉并不完全安全,但我没有收到任何错误,而且似乎将它从 UIApplication 的窗口数组中删除了。如果这有误,请告诉我。

更新:

我遇到的另一个问题是 UIStatusBar 在我显示并删除了这个覆盖窗口后没有采取触摸事件来将事件的 UIScrollView 滚动到顶部。解决方案是在释放覆盖层后将主窗口设置回关键窗口。

[primaryWindow makeKeyWindow];

关于iphone - 在所有其他 View 之上添加 UIView,包括 StatusBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2666792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com