Ios 如何在UIWindow中添加视图?

Ios 如何在UIWindow中添加视图?,ios,objective-c,uiwindow,Ios,Objective C,Uiwindow,我想用以下代码在ui窗口中添加一个视图: AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; UIWindow *window = delegate.window; UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; aView.backgroundColor = [UIColor

我想用以下代码在
ui窗口中添加一个视图:

 AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
 UIWindow *window = delegate.window;
 UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
 aView.backgroundColor = [UIColor blackColor];
 [window addSubview:aView];
window = [[UIApplication sharedApplication].windows objectAtIndex:0];
这个代码不起作用。我想克隆UIAlertView的属性。当我们打电话时,它会突然出现在所有东西上面
[alertViewInstance show]方法

也尝试过这个:

   UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
    UIWindow* window = [UIApplication sharedApplication].keyWindow;

    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    [window addSubview:aView];
    [window bringSubviewToFront:aView];

您的windows需要有根视图控制器

AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;

UIWindow *window = delegate.window;
UIViewController *controller = [[UIViewController alloc] init]; 
window.rootViewController = controller;
UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[controller.view addSubview:aView];

您可以尝试以下代码…将子视图添加到窗口

UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
aView.backgroundColor = [UIColor blackColor];
[[UIApplication sharedApplication].keyWindow addSubview:aView];
//移除

[aView removeFromSuperview];

希望对你有帮助

我想你错过了这个。检查一下

[self.window makeKeyAndVisible];
请尝试使用以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIWindow* window = [UIApplication sharedApplication].keyWindow;
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView.backgroundColor = [UIColor redColor];
    aView.center = window.center;
    [window insertSubview:aView aboveSubview:self.view];
    [window bringSubviewToFront:aView];
}
window = [[UIApplication sharedApplication].windows lastObject];

UIAlertView创建另一个UIWindow,并在调用show方法时将此窗口设置为键窗口。因此,如果您想显示自己的警报视图,请创建一个UIWindow实例,显示它并将自定义警报视图添加到此新创建的窗口。

请尝试以下代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIWindow* window = [UIApplication sharedApplication].keyWindow;
    if (!window) {
        window = [[UIApplication sharedApplication].windows objectAtIndex:0];
    }

    UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
    aView.backgroundColor = [UIColor redColor];
    aView.center = window.center;
    [window insertSubview:aView aboveSubview:self.view];
    [window bringSubviewToFront:aView];
}
window = [[UIApplication sharedApplication].windows lastObject];
替换以下代码:

 AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
 UIWindow *window = delegate.window;
 UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];
 aView.backgroundColor = [UIColor blackColor];
 [window addSubview:aView];
window = [[UIApplication sharedApplication].windows objectAtIndex:0];

如果您使用的是
UINavigationController
使用:

[self.navigationController.view.window addSubview:aView];
[self.tabBarController.view.window addSubview:aView];
如果您使用的是
UITabBarController
使用:

[self.navigationController.view.window addSubview:aView];
[self.tabBarController.view.window addSubview:aView];
AppDelegate
中,您可以直接将视图指定给窗口。在
appDelegate
中,使用选项完成启动
方法使用:

[self.window addSubview:aView];

希望对您有所帮助…

您可以使用以下命令添加视图

[[[UIApplication sharedApplication] keyWindow] addSubview:YOUR_VIEW];

这似乎可行,但新视图覆盖了整个屏幕。它的帧是{(0,0)(320568)}是的,viewcontroller.view覆盖了整个屏幕。你想要的视图大小为100,我想做的是让它看起来像alertView。透明背景。但它将与调用此代码的viewController重叠。当我添加此视图时,它将成功添加!!但是我的导航栏稍微隐藏在这个视图后面。有什么建议吗@尼科斯姆,嗯?它会起作用的。我使用此代码来定制(伪造)popoverView或alertView。您可以在下面添加代码:[窗口显示SubViewToFront:aView];我的故事板:如果您不设置RootViewController,则aView将不会显示。当我添加此视图时,它将成功添加!!但是我的导航栏稍微隐藏在这个视图后面。有什么建议吗@TienReset its
rootViewController
makeKeyAndVisible
;在您的应用程序中(完成启动后!)如果您没有像这样使用
UIWindow
,这显然意味着您不需要为实际任务使用
UIWindow
。就是这样。。。其他方法可以工作,只要你有这个当我添加此视图时,它会成功添加!!但是我的导航栏稍微隐藏在这个视图后面。有什么建议吗@维迪南德