在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕

Posted

技术标签:

【中文标题】在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕【英文标题】:add UIView loading screen on top window of application in objective c 【发布时间】:2021-12-29 09:44:27 【问题描述】:

我正在尝试添加带有 UIActivityIndi​​catorView 的 UIView 似乎不起作用。任何帮助表示赞赏。

UIView *overlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
overlayView.backgroundColor = [UIColor colorWithRed:255 green:255 blue:255 alpha:1];
UIActivityIndicatorView* activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicator.center = overlayView.center;
[overlayView addSubview:activityIndicator];
[activityIndicator startAnimating];
UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];
[keyWindow addSubview:overlayView];

尝试也像这样添加它

 [self.navigationController.view addSubview:overlayView];
 [self.navigationController.view bringSubviewToFront:overlayView];

似乎可以工作,但导航栏没有隐藏

【问题讨论】:

创建你的框架你尝试过这样设置吗: UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [ UIScreen mainScreen].bounds.size.height)]; 不让我试试 不一样的结果。似乎当导航栏没有隐藏时,它会显示在覆盖视图的前面...... 究竟是什么不工作? 不显示带有 UIWindow 的视图 *keyWindow = [[[UIApplication sharedApplication] delegate] window]; [keyWindow addSubview:overlayView];但使用 [self.navigationController.view addSubview:overlayView] 显示视图; [self.navigationController.view 带来SubviewToFront:overlayView];但导航栏仍然显示在它的前面。加载视图没有覆盖导航栏... 【参考方案1】:

可以像这样向当前显示的控制器添加叠加层:

- (void)viewDidAppear:(BOOL)animated; 
    UIView *overlayView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];

    overlayView.backgroundColor = [UIColor blackColor];
    overlayView.alpha = 0.8;
    [self.view.window addSubview:overlayView];

这个覆盖应该覆盖所有当前窗口。

【讨论】:

我会努力的,我会告诉你的 不,这似乎不起作用 好的,尝试编辑您的问题并添加所有鳕鱼进行测试,好吗?包括 ViewController 端。 这不是我的代码,并且在视图控制器中超过 2000 多行代码,所以我无法添加它【参考方案2】:

在您的 viewcontroller 类中,使用以下代码显示您的叠加视图。

UIView *overlayView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[overlayView setBackgroundColor:[UIColor colorWithWhite:0.5 alpha:0.7]];
[self.view.window addSubview:overlayView];

这里的关键是使用 viewcontroller 的视图的窗口对象,这样在NavigationControllerTabBarController 的情况下,完整的视图与导航栏和/或标签栏重叠。

【讨论】:

不,这不起作用... 那你最好分享完整的代码。可能是其他问题。 您的代码肯定有问题,因为我检查了您粘贴在问题中的您自己的代码,并且工作正常。

以上是关于在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在ios目标c的UIImageView中添加UIView

创建一个即使在全屏模式下也保持在顶部的新窗口(Linux 上的 Qt)

NavigationView 顶部的额外空间

在 Apple Watch Storyboard 中的图像顶部添加标签

Jquery UI Position 的问题:目标在窗口中的位置很重要?

查看大表格时,HTML 表格标题始终显示在窗口顶部