在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕
Posted
技术标签:
【中文标题】在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕【英文标题】:add UIView loading screen on top window of application in objective c 【发布时间】:2021-12-29 09:44:27 【问题描述】:我正在尝试添加带有 UIActivityIndicatorView 的 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 的视图的窗口对象,这样在NavigationController
或TabBarController
的情况下,完整的视图与导航栏和/或标签栏重叠。
【讨论】:
不,这不起作用... 那你最好分享完整的代码。可能是其他问题。 您的代码肯定有问题,因为我检查了您粘贴在问题中的您自己的代码,并且工作正常。以上是关于在目标 c 中的应用程序顶部窗口上添加 UIView 加载屏幕的主要内容,如果未能解决你的问题,请参考以下文章
如何在ios目标c的UIImageView中添加UIView
创建一个即使在全屏模式下也保持在顶部的新窗口(Linux 上的 Qt)
在 Apple Watch Storyboard 中的图像顶部添加标签